c语言 int *p=5 是啥意思。 是p的地址是5。还是*p的值为5

如题所述

你的问题问得很好,这是初学者常困扰的地方。
外形一样的东西,在声明里 和 在语句里 意思 可能不同,这是 C 语言奇葩 之一,常困扰初学者的地方。

int *p=5; 这是声明。声明里 *p 只是表示 声明 p 是指针。 *p=5 叫初始化。
但这样的初始化方法是错误的!指针 初始化 要给 地址,不能给值。

声明里,正确写法如下:
int a=4;
int *p=&a;
这样才对。int *p=&a; 声明 p 是指针,初始化 给 变量a 的地址。

语句里 可以写:
*p =5; 这是赋值语句,语句里 *p 表示指针指向的值,赋5。
语句里 可以写:
p = &b; 语句里 没星号的 p 表示指针指向的地址,赋 变量b 的地址。

所以要分清 是声明 还是 语句。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-19
int *p=5——啥意思都不是。因为C/C++中就没有这样的语句,你见过?
如果是int *p=(int *)5,那是定义一个int *型指针并将常数5强制为int *型赋给指针p来初始化指针p。所以int *p=5是完全错误的语句。你可以用
void main(void){
int *p=5;
}
试试看编译器让不让通过编译……
第2个回答  2013-09-19
如果这样的话表示的是p的值是5.
我们一般都这样赋值:
int *p = &5;把5的地址传给指针p
int *p; *p=5; 指针p指向5
第3个回答  2013-09-19
*p表示p的地址
第4个回答  2013-09-19
是一个指针