关于指针变量的赋值,问个问题
第一段main()
{
int a=2,*p=&a,*q=&a;
printf("%d %d\n",*p++,*(q++));
p=&a; q=&a;
printf("%d %d\n",*p,(*q)++);
}
第二段
main()
{
int a=2,*p,*q;
q=p=&a;
printf("%d %d\n",*p++,*(q++));
p=&a; q=&a;
printf("%d %d\n",*p,(*q)++);
}
以上二段红色代码有区别,程序运行结果一样,
但谭教授的书上说不能写成:*p=&a,因为a的地址是赋给指针变量p,而不是赋给*p(即变量a)。
*p不是应该=a吗?怎么变成了*p=&a(a的地址也是正确的了?)我实在是搞糊涂了,那位能解下疑啊。。。谢谢了。。。
p是指针变量,指向a的地址,所以p=&a;
*p是指针变量p所指向的地址中的数值,所以*p=a;
但是为什么*p=&a,也不是错的?
[ 本帖最后由 widelove 于 2009-7-17 00:03 编辑 ] int a=2,*p=&a,*q=&a;
是
int a=2;
int *p;
int *q;
p = q = &a;
的缩写
准确说是
int a=2;
int *p=&a;
int *q=&a;
的缩写
int* p = &a;
int*是修饰p的。表名p是一个指向int型的指针类型
p这个变量存放的是a变量的地址
照这样是不是可以理解成:
定义的时候*号是用作定义符的
在语句中的*号是指针运算符。
A 定义 PK 赋值
页:
[1]