c - ptr、*ptr 和 &ptr 之间的区别

标签 c pointers

我最近在研究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

有疑问吗?

  1. “&ptr=0029FF14”是存储“*ptr=10”的内存位置吗?
  2. “ptr=0001869F”是存储“&ptr=0029FF14”的内存位置吗?如果不是那么 ptr 是什么?

谢谢!

我相信这个问题与“C 指针语法”帖子不同,因为它不区分 ptr、*ptr 和 &ptr,这意味着该帖子没有解释为什么“ptr”根据运算符包含不同的值附带。 [已编辑]

最佳答案

  • ptr 是指针本身。
  • *ptr 是它指向的值。
  • &ptr 是指针的地址。

所以,哇,

  1. &a 是存储a 的内存位置。

  2. a 是存储*a 的内存位置。

关于c - ptr、*ptr 和 &ptr 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35950099/

相关文章:

C 奇怪的指针算术

c - 复制字符串中的地址时出现奇怪的行为

c - 在二叉树中寻找共同祖先

c -/proc/net/tcp Solaris 11 下的替代方案

c - 与 IEEE-754 相比,内存中的浮点位模式按位反转了吗?

c++ - 如何在不使用循环的情况下快速打印由指向指针的指针组成的二维字符数组?

c - 在 C 中将指针作为只读函数传递

c - 是什么导致此代码中的段错误?

c - 为多条消息重用一个管道

c++ - 如何使用 scanf 验证输入