Vous imprimez l'adresse pas l'utilisation de la valeur
printf("char is %c",*arr);
Essayez d'exécuter ce via un débogueur pour comprendre ce qui se passe, et s'il vous plaît demander une vraie question, comme ce que pensez-vous devrait se produire, et ce que vous observez au lieu. En faisant cela, vous allez probablement répondre à la plupart de vos questions. Par ailleurs, une fois à l'impression, arr est une variable locale, et sizeof comme aucun moyen de connaître la taille du tableau d'origine, il devrait donc imprimer taille est 4. Le code ci-dessous montre ce comportement, et une différence entre tableau et pointeurs quand il s'agit de sizeof. Si vous essayez
EDIT: changé code pour quelque chose que j'ai testé, plutôt que juste deviné, grâce au commentaire de Daniel
#include <stdio.h>
void print(char *);
int main(int argc, char ** argv)
{
char temp = 'r';
char temp2[] = {'a','b'};
char temp3[] = {'r'};
print(&temp);
print(temp2);
print(temp3);
printf("sizeof temp is %d\n",sizeof(&temp));
printf("sizeof temp2 is %d\n", sizeof(temp2));
printf("sizeof temp3 is %d\n",sizeof(temp3));
return 0;
}
void print(char * arr)
{
printf("size of arr is %d\n", sizeof(arr));
printf("arr contains %c\n", *arr);
}
Vous obtenez:
size of arr is 4
arr contains r
size of arr is 4
arr contains a
size of arr is 4
arr contains r
sizeof temp is 4
sizeof temp2 is 2
sizeof temp3 is 1
Et qu'attendez-vous? –
-1: Quelle est votre question? – hillu
Aussi, s'il vous plaît ne postez pas de questions avec des séries concaténées de! –