Test di autovalutazione 18
Domanda 1 :
Quali sono le funzioni essenziali per la allocazione dinamica, nel linguaggio C?
malloc() e realloc()
malloc()
malloc() e free()
calloc() e malloc()
Domanda 2 :
Quale e' il prototipo della funzione malloc() ?
int malloc(size numero_di_byte)
void malloc(size_t numero_di_byte);
int *malloc(size numero_di_byte);
void * malloc(size_t numero_di_byte);
Domanda 3 :
Cosa fa il seguente programma ?
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
main( ){ char *strin; register int i;
strin = malloc(80 * sizeof ( int ));
if (! strin)
{ printf ( “\nRichiesta di memoria negata”\n); exit (1); }
gets (strin);
for (i=strlen(strin)-1; i>=0; i--)
printf (“%c”,strin[i]); free (strin); }
utilizza un array allocato dinamicamente per acquisire una stringa strin da input (tastiera) e stampa la stringa all’indietro.
utilizza un array per acquisire una stringa strin da input (tastiera) e stampa la stringa all’indietro.
utilizza un array allocato dinamicamente per acquisire una stringa strin da input (tastiera) e stampa la semistringa un carattere si ed un altro no.
utilizza un array allocato dinamicamente per acquisire una stringa strin da input e stampa la stringa .
Domanda 4 :
Cosa stampera' il seguente programma ?
#include<stdio.h>
main(){int num, *p; num=350;p=num;printf("%d",*p);}
stampera' un valore sconosciuto
stampera' il valore di num ossia 350
non stampera' nessun valore
stampera' due volte il valore 350
Domanda 5
Cosa fa il compilatore C all'array numero nel seguente programma ?
void print_array(int [] ); /*prototipo funzione print_array*/
main ( )
{
int array[20], k;
for (k=0; k<20; k++)
array[k]=k;
print_array (array);
/*chiamata della funzione print_array con parametro attuale array*/
}
void print_array (int numero[20])
int j;
for (j=0; j<20; j++)
printf (“%d”, numero[j]);
Notiamo che il programma dichiara numero come un array di 20 elementi interi.
il compilatore C lo lascia come e', poiche’ puo’ essere che un parametro formale riceva un array completo.
il compilatore C lo lascia come e', poiche’ puo’ essere che un parametro attuale riceva un array completo.
il compilatore C lo converte in un puntatore intero, poiche’ non puo’ essere che un parametro attuale riceva un array completo.
il compilatore C lo converte in un puntatore intero, poiche’ non puo’ essere che un parametro formale riceva un array completo.
Domanda 6 :
Una variabile e' individuata da un indirizzo ed una funzione da cosa?
dall'indirizzo di inizio del codice della funzione
dall'indirizzo dove viene memorizzato il corpo della funzione
dall'identificatore del puntatore a funzione
dall' indirizzo della parte dichiarativa della funzione
Domanda 7 :
Il nome di un vettore 'nome_array' e' equivalente a che cosa?
al puntatore all'indirizzo del suo primo elemento
a nome_array[0]
all'indirizzo del suo primo elemento, ossia &nome_array[0]
all'indirizzo del suo primo elemento, ossia nome_array[0]
Domanda 8 :
La seguente dichiarazione : void(*g[3])(int)={f1,f2,f3}; cosa rappresenta?
il prototipo di un array di funzioni che riceveranno come argomento un int e che restituiranno void; l'array e' stato inizializzato con i nomi delle tre funzioni
la definizione di un array di 3 puntatori che riceveranno come argomento un int e che restituiranno void; l'array e' stato inizializzato con i nomi delle tre funzioni
un array di 3 funzioni che riceveranno come argomento un int e che restituiranno void; l'array e' stato inizializzato con i nomi delle tre funzioni
il prototipo di un array di 3 puntatori a funzioni che riceveranno come argomento un int e che restituiranno void; l'array e' stato inizializzato con i nomi delle tre funzioni
_____________________________________________________
return to lesson 18