Oppure

Loading
12/06/10 12:18
ho capito:

per capire meglio ho fatto un programmino

#include <stdio.h>

int main (void) {
	char *a[4] = { "ciao", "nonna", "cavolo", "barba" };
	char  b[4] = { "ciao", "nonna", "cavolo", "barba" }; /* mi da errore */
	printf("%c\n", *a[2]); /* mi stampa la lettera c di cavolo */
	printf("%c\n", b[2]); /* non verrà mai stampata */
	return 0;
}


ho notato che con i vettori di puntatori posso inserire quanti valori (stringhe) voglio;

char *pPtr[7] = {"ciao", "b", "cavolo", "pitagora", "nessuno", "piero"};

quando vado a stampare un elemento del vettore *pPtr si avrà il seguente caso:
printf("%c\n", *pPtr[2]);
output: $ c 

quindi mi stamperà le iniziali di ogni valore (stinga) che io chiamerò.

in questo caso:
char  b[4] = { "ciao", "nonna", "cavolo", "barba" }; /* mi da errore */

mi da errore per il semplice motivo che non posso inserire più stringhe all'interno di un semplice vettore;
con un vettore (non puntatore) posso fare solo cosi:
char a[4] = { 'c', 'i', 'a', 'o', 'ho capito: 


per capire meglio ho fatto un programmino

#include <stdio.h>

int main (void) {
	char *a[4] = { "ciao", "nonna", "cavolo", "barba" };
	char  b[4] = { "ciao", "nonna", "cavolo", "barba" }; /* mi da errore */
	printf("%c\n", *a[2]); /* mi stampa la lettera c di cavolo */
	printf("%c\n", b[2]); /* non verrà mai stampata */
	return 0;
}


ho notato che con i vettori di puntatori posso inserire quanti valori (stringhe) voglio;

char *pPtr[7] = {"ciao", "b", "cavolo", "pitagora", "nessuno", "piero"};

quando vado a stampare un elemento del vettore *pPtr si avrà il seguente caso:
printf("%c\n", *pPtr[2]);
output: $ c 

quindi mi stamperà le iniziali di ogni valore (stinga) che io chiamerò.

in questo caso:
char  b[4] = { "ciao", "nonna", "cavolo", "barba" }; /* mi da errore */

mi da errore per il semplice motivo che non posso inserire più stringhe all'interno di un semplice vettore;
con un vettore (non puntatore) posso fare solo cosi:
char a[4] = { 'c', 'i', 'a', 'o', '{parsed_message}'};
oppure posso fare così
char a[4] = {"ciao"};

il risultato è sempre lo stesso ..

Per riepilogare:
char *String2 = {"ciao"}; /* è costante e non puo essere modificato */
char String2[4] = {"ciao"}; /* questo vettore invece lo posso modificare */

"..." i doppi apici gli uso per racchiudere più caratteri
'.' i singoli apici gli uso per racchiudere un solo carattere

Grazie Nessuno !'}; oppure posso fare così char a[4] = {"ciao"};

il risultato è sempre lo stesso ..

Per riepilogare:
char *String2 = {"ciao"}; /* è costante e non puo essere modificato */
char String2[4] = {"ciao"}; /* questo vettore invece lo posso modificare */

"..." i doppi apici gli uso per racchiudere più caratteri
'.' i singoli apici gli uso per racchiudere un solo carattere

Grazie Nessuno !
Ultima modifica effettuata da 12/06/10 12:24
12/06/10 13:29
Attenzione ... nel caso di

char a[4] = { 'c', 'i', 'a', 'o', 'Attenzione ... nel caso di

char a[4] = { 'c', 'i', 'a', 'o', '{parsed_message}'};
char a[4] = {"ciao"};

avrai degli errori (o warnings) dal compilatore perchè i caratteri sono 5 ... quindi

char a[5] = { 'c', 'i', 'a', 'o', '{parsed_message}'};
char a[5] = {"ciao"};
'};
char a[4] = {"ciao"};

avrai degli errori (o warnings) dal compilatore perchè i caratteri sono 5 ... quindi

char a[5] = { 'c', 'i', 'a', 'o', 'Attenzione ... nel caso di

char a[4] = { 'c', 'i', 'a', 'o', '{parsed_message}'};
char a[4] = {"ciao"};

avrai degli errori (o warnings) dal compilatore perchè i caratteri sono 5 ... quindi

char a[5] = { 'c', 'i', 'a', 'o', '{parsed_message}'};
char a[5] = {"ciao"};
'};
char a[5] = {"ciao"};