Mein Lehrbuch hat eine Frage, was die Ausgabe des folgenden Code-Schnipsel sein wird, fragt:Warum ist das die Ausgabe des Zeigers?
#include<stdio.h>
int main()
{
int arr[3] = {2, 3, 4};
char *p;
p = arr;
p = (char*)((int*)(p));
printf("%d, ", *p);
p = (int*)(p+1);
printf("%d", *p);
return 0;
}
Optionen:
A. 2,
B. 2, 3 0
C. 2, Garbage Wert
0 D., 0
Nach dem Lehrbuch ist die Antwort B
, aber ich bin verwirrt - kann jemand erklären warum?
Also, was ist los? Was hast du erwartet? Was hast du versucht, das selbst zu beantworten? Was sagt dein Lieblings-C-Buch? Was ** speziell ** darüber verstehst du nicht? Hast du ** irgendetwas ** versucht, bevor du fragst? – Olaf
Bei dieser Art von Frage kann es sehr schwer sein, genau zu bestimmen, was genau man nicht versteht und noch schwerer herauszufinden, nach welchen Keywords gesucht werden soll. Das Lernen der Gesamtheit der C-Sprache würde offensichtlich immer noch ihre Frage beantworten, scheint aber irgendwie unverhältnismäßig zu sein. Was * sollten * sie Ihrer Meinung nach versucht haben? –