C语言中,关于printf的问题!

程序如下,为什么打印p时候值是不确定的?我知道正确的写法是 * p,但是我想知道
直接打印p为什么不报错,也没警告,但是值却不确定?

 #include <stdio.h>

int main()
{
    int a =8;
    int *p = &a
    printf("%d\n",p);
}

17个回答

printf("%d\n",p) 代表指针p所指向的变量的地址值,所以不报错,你输出的是整型变量a的地址值,要想输出a的值必须为printf("%d\n,*p")。

指针本身也是一个整数,至于为什么不确定,是每次运行分配的内存不同。

p输出的是指针,每次分配的不同,所以不确定。输出指针(本身也是一个整数)和输出指针指向的值都是可以的。

p中存储的是a的地址,也是一个数值,用printf输出自然是没有问题的!

因为p是指针,指向的是a的地址,你输出p其实是输出了a的地址,因为每次给它分配的地址不一样,所以每次运行值都会变。ps:int *p = &a 后面少了个;

p里面存的是a的地址,所以打印的是地址,因为程序运行时变量分配空间是随机的,所以地址就是随机的
打印地址最好用%p格式

每次运行程序,系统都会位程序重新分配内存,分配的内存不一定在同一个地方,所以显示的不一样,另外输出地址的话,最好用 %p 占位字符比较好

p作为一个指针,本身也有值,不报错正常。

只是没有告诉输出函数输出什么。

huangcunguilai
荒村归来 输出的是一个内存地址,在上面代码中,输出的就是a的内存地址
5 年多之前 回复
共17条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐