我在下面提到了三個不同的例子。我不明白爲什麼ex1有相同的ex2輸出和ex3不同的輸出,爲什麼ex2與ex3不一樣,我只是在另一行創建一個!C中的基本指針?
EX1
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y;
y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
輸出
value: 2
address: 2686744
EX2
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
OU tput的
value: 2
address: 2686744
EX3
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int x=2;
int *y;
*y = &x;
printf("value: %d\n", *y);
printf("address: %d\n", y);
return EXIT_SUCCESS;
}
輸出
value: 2686744
address: 2130567168
我有指針的很大的誤解當我想到STAR必須用(Y)BECOME NOT(INT) 我想出了這個星星(int )NOT(Y)(^_^) 現在一切都清楚我...感謝所有的答案
見L值和R值調高你的編譯器警告級別,你應該被告知有關問題... – 2012-03-16 16:55:22
EX3是無效的。如果'y'從未設置,則不能帶'* y'。 – asveikau 2012-03-16 16:56:43
你也應該習慣在打印指針時使用'%p',而不是'%d'。 (但仍然使用'%d'作爲整數類型,例如'* y'。) – asveikau 2012-03-16 16:58:30