我最近在研究C语言中的指针,我似乎无法完全理解这段代码:
int *ptr= (*int) 99999;
*ptr = 10;
printf("%d\n,*ptr); //Outputs: 10
printf("%p\n",&ptr); //Outputs: 0029FF14
printf("%p\n",ptr); //Outputs: 0001869F
有疑问吗?
- “&ptr=0029FF14”是存储“*ptr=10”的内存位置吗?
- “ptr=0001869F”是存储“&ptr=0029FF14”的内存位置吗?如果不是那么 ptr 是什么?
谢谢!
我相信这个问题与“C 指针语法”帖子不同,因为它不区分 ptr、*ptr 和 &ptr,这意味着该帖子没有解释为什么“ptr”根据运算符包含不同的值附带。 [已编辑]
最佳答案
ptr
是指针本身。*ptr
是它指向的值。&ptr
是指针的地址。
所以,哇,
&a
是存储a
的内存位置。a
是存储*a
的内存位置。
关于c - ptr、*ptr 和 &ptr 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950099/