C语言中指针赋值的问题 10
假设P是一个定义完的指针变量,请问下面的几种赋值有什么区别?*p=a;*p=&a;p=&a;另外,如果在定义指针变量时,如inta;int*p=&a;和int*p=a;的...
假设P是一个定义完的指针变量,请问下面的几种赋值有什么区别?
*p=a;
*p=&a;
p=&a;
另外,如果在定义指针变量时,如
int a;
int *p=&a; 和int *p=a; 的效果一样么,为什么?
还有,我在keil中定义了一个指针变量p,但未赋值,在主函数中,直接写入*p=1;编译器也通过了编译,这又是为什么,首先指针地址都还没有,*p=1表示的意义是什么。 展开
*p=a;
*p=&a;
p=&a;
另外,如果在定义指针变量时,如
int a;
int *p=&a; 和int *p=a; 的效果一样么,为什么?
还有,我在keil中定义了一个指针变量p,但未赋值,在主函数中,直接写入*p=1;编译器也通过了编译,这又是为什么,首先指针地址都还没有,*p=1表示的意义是什么。 展开
1个回答
展开全部
P是一个指针,顾名思义,它代表的内存中的地址。而 * 操作符则表示该地址所存储的东西。比如说,你有一个仓库,P就是告诉你这个仓库在哪,*P 告诉你的是这个仓库里面有什么。
因此,1. *P = a 表示,你把 int 型的变量 a放到这个仓库里,是赋值操作;
2. & 是取地址,&a就是获取a的地址,*P = &a,就是将 a 的地址放到这个仓库;
3. P = & a,P本身就代表地址指向,所以这里是把a 的地址赋给P,就是将P指向了a。
因此,1. *P = a 表示,你把 int 型的变量 a放到这个仓库里,是赋值操作;
2. & 是取地址,&a就是获取a的地址,*P = &a,就是将 a 的地址放到这个仓库;
3. P = & a,P本身就代表地址指向,所以这里是把a 的地址赋给P,就是将P指向了a。
更多追问追答
追问
你说的这些我也知道,主要是我想知道int *p=&a; 和int *p=a; 的效果一样么,百度上有很多帖子都说定义指针变量时,int *p=&a; 的意思是把a的地址赋给p,就是等同于p=&a;不知道这种说法是否正确。
追答
int *p=&a; 和int *p=a 不一样
不能用一个整数给一个指针变量赋值,如int *p =200,这是错误的。
感觉上面的东西你都没理解。。。
注意这里的&运算符。 *p=&a; 和 *p=a 能一样吗?
另外,你既然用的是Keil 的话,那可以设个断点看看这两条语句 P 里面是什么啊?这些基本的调试还是要会啊。理论有疑惑的时候,实践一下就明白了。不然永远弄不清楚。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询