*p = &x;
谁能告诉我这句话的意思
实际上我每次都对此感到困惑。
#include <stdio.h>
int main()
{
int x = 3;
const int *p = &x;
*p++;
printf("%d\n", *p);
}
答案 0 :(得分:0)
这里
int *p = &x;
表示p是指针(保存地址)被赋予变量x的地址,其为 int 类型(&amp; - &gt;给出地址)
如果您打印 p 的值,那么它将是一些像0047的地址(可以是任何东西,这只是一个例子) 如果您打印 * p 的值,那么您将获得 3
答案 1 :(得分:0)
*p = &x; // this is not valid
const int *p = &x;
这里p是指向常数整数
的指针答案 2 :(得分:0)
const int *p = &x;
相当于写作
const int *p;
p = &x;
在这两种情况下,您都声明了一个名为p
的类型为“const int
指针”的变量,并且您要为其分配int
变量的地址。
在此之后,表达式 *p
等同于表达式x
。
代码
*p++;
printf("%d\n", *p);
有一个错误。像++
这样的后缀运算符的优先级高于*
之类的一元运算符,因此*p++
被解析为*(p++)
;你取消引用p++
表达式的结果,它会增加指针,而不是指向的东西。 p
会指向下一个int
,所以如果您期望输出为4
,您会感到失望。
为了增加指向的东西,你需要写(*p)++
。