C语言指针,如果p=&k,则p是指针变量,那么*p也可以看做指针变量?形参为啥可把*p看做指针变量啊?

*p在形参定义时看做指针变量,下面函数执行时*p又看做一个值,这怎么看?

注意分清 语句和声明。
外貌都是 *p, 在语句 和 在声明 意思不同。
------------------------------
p=&k; 这显然是语句。语句里 &k 是变量 k 的 地址,能接受赋值的 p 是指针。
所以,它们的声明很可能是:
int k; int *p;
-------------------------------
形参 书写 是用 声明的形式,例如:
void add(int a, int b, int *p);
形参 int *p -- 用的是 声明的形式,p 是指针。
-------------------------------
声明为 int *p; // p 是 指针 变量
语句中 *p 是 指针指向的值,p 是 地址。
k = 20;
p = &k; // 地址
printf("%d\n", *p); // 打印数值
printf("%p\n", p); // 打印地址
*p = 10; // 值
a = *p; //值
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-10
指针在定义时使用 * 是为了把它和一般变量区分开
定义时:int *p
在使用时 *p是指指针变量p这个地址里面存放的值,*p不是指针变量,而是一个一般的值。
第2个回答  2014-02-11
简单的说在起初主函数定义是必须 *p=&k
之后使用p就是指针变量,*p是个变量,
在函数调用中如果实参是p(指针变量),则形参对应是个指针
例如 *a(形参列表指针)=p(实参列表指针) 等于 *p(形参列表指针)=p(实参列表指针)
第3个回答  2014-02-11
谁说的形参int *p中*p是指针?*是int的,不是p的,int *p是说p是int *型指针,而不是说*p是int型变量!变量都得以下划线或字母开头你忘了?以*开头怎么会是合法标识符!
第4个回答  2014-02-11
int *p;
求解如何将*p看成一个指针变量。怎么看都只会是一个int。
相似回答