Salut,
Alors voilà, j'ai des instructions sur les pointeurs que je ne comprend pas bien.
Je les ai écris :
Dans un premier temps j'ai hésiter à me sucider en me coupant les veines avec la feuille d'exam (c'était bien dans un exam de c) ... et dans un second temps aussi ... Mais bon j'ai quand même réussi à comprendre certaines instruction (3 avec les "//" et qqunes avec les adresses). J'ai alors plusieurs questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include <stdio.h> int main(){ int a[] = {12,23,34,45,56,67,78,89,90,100}; int *p, (*q)[2]; p=a; q = (int (*)[2])&a; printf("%p %p %p\n",a,&p,&q); printf("%d\n", *p+2); //14 printf("%d\n", *(p+2)); //34 printf("%p\n", &p+1); printf("%p\n",&a[4]); printf("%p\n",&a[4]-3); printf("%p\n",a+3); printf("%d\n",&a[7]-p); printf("%p\n",p+(*p-10)); printf("%d\n",*(p+*(p+8)-a[7])); //23 printf("%d\n",(*q)[3]); printf("%p\n",q+2); printf("%d\n",(*(q+3))[1]); return 0; }
- que fait l'instruction qui affecte q ?
- que se passe t-il quand on ajoute 3 a une adresse ? Genre &a[4]-3 ou a+3 , comment expliqueriez vous ce résultat ?
- que font les 3 dernières instructions exactement ?
Après avoir regardé qq cours sur les pointeurs, je ne trouve toujours pas réponses à ces questions ... Si qqun pourrait m'éclairer je serai très reconnaissant.
Merci d'avance.
Edit : j'ai oublié de vous donner les résultats de ce prog :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 0xbfdb8d60 0xbfdb8d8c 0xbfdb8d88 14 34 0xbfdb8d90 0xbfdb8d70 0xbfdb8d64 0xbfdb8d6c 7 0xbfdb8d68 23 45 0xbfdb8d70 89
Partager