C语言指针中的初级问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 21:24:44
#include <stdio.h>
void main()
{ int n,*p;
p=&n;
printf("请输入n的值: ");
scanf("%d",p); /*这句中对p不懂,我对p的理解是p地 址,就与输入数字相矛盾,请问我该如何理解这个p???*/
printf("*p=%d\n",*p);
printf("n=%d\n",n);
printf("%d",p); /*如果加上这句,p输出的应该是地址吧?*/
}
请高手指教

scanf("%d",p) 这里的P是地址,scanf("%d",&n),这里&n也是地址,记住是地址就行了..
printf("%d",p); 这里好跟本不用学,没有用,256内存与512内存,输出就不一样,同大小内存前面如果开着别的程序,输出也不同..这里输出的是相对地址,而不是绝对地址!!

scanf 本来就是取地址 其他数据类型要加 &取地址的 难道忘了 ?

p以%d输出会出错 ^_^ p是地址 不是整型哦

当然 要看编译器的不同拉 。

如果是个int变量a
你会这样写:
scanf("%d",&a);
注意,后面是个地址
所以直接写p就不会奇怪了

scanf("%d",p);
还差地址符&,应该是
scanf("%d",&p);

而你就把它变成指针变量,所以就直接运用即可

p=&a,*p=a,这点清楚吧,p是指针变量,打印p所指向的地址的函数应该是
printf("%p",p);而不是printf("%d",p);因为p不是整形的,这跟编译器有关,一般是16进制的4位数