int *a、b[10]、**c a是一个指针变量,他的地址是多少? 如果给它赋值一个

int*a、b[10]、**ca是一个指针变量,他的地址是多少?如果给它赋值一个地址a=b那么c=&a,c取地址取的是谁的地址难道a的地址不是b?如果c=&a,c取到的是... int *a、b[10]、**c
a是一个指针变量,他的地址是多少?
如果给它赋值一个地址
a=b
那么c=&a,c取地址取的是谁的地址难道a的地址不是b?
如果c=&a,c取到的是b这个地址,为什么又可以赋值给指针的指针c?
上面的a=b到底什么关系,难到不是把b的地址赋值给a,a就是b
展开
 我来答
风若远去何人留
2017-05-23 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450134
专业C/C++软件开发

向TA提问 私信TA
展开全部
int *a,b[10],**c;
》》》a是指针, b是数组, c是二维指针
a是一个指针变量,他的地址是多少?
》》》a的地址是系统分配的, 表示为&a, &a的类型是int **型。
如果给它赋值一个地址
a=b
》》》a=b是赋值a,改变的是a的值,而不是a的地址。 a的地址是不可能改变的。

那么c=&a,c取地址取的是谁的地址难道a的地址不是b?
》》》这个是取a的地址赋值给c, 是a的地址,不是b的。 赋值a=b的时候,只是把b的值给a了,和b的地址没关系。 就像 int a,b=1; int *p; a=b只是赋值, p=&a还是取a的地址而不是b的。 这个原理,和你说的本质是相同的。

如果c=&a,c取到的是b这个地址,为什么又可以赋值给指针的指针c?
》》》c赋值的是a的地址,不是b的地址。 a的地址是int **型,可以赋值给c。 而b是数组,b的地址&b其实是数组指针, 如果真c=&b那就会出错了,访问**c的时候会挂掉。 你可以试试。
上面的a=b到底什么关系,难到不是把b的地址赋值给a,a就是b
》》》就像之前说的,a=b只是简单的赋值,别因为是数组或者指针就想太多。 变量间赋值,如果没有&取地址,那就不涉及地址。
追问
因为我记得以前好像有个人说过因为数组名是一个地址,所以在赋值数组名的时候当地址来看待
例如
int *b,a[10]
b=a,就是把数组首地址赋值给b。
所以我听了你说后,我知道了指针变量是有地址的而且这个地址是系统定的一般用&b来表示指针变量b的地址。
那我可不这样认为指针变量准确来说不是地址,在使用一个指针变量的时候不能像数组名一样直接使用,需要加取地址符合&
追答
看具体情况
指针变量本身有地址 它的值也是另外一个地址,这两个地址的值,以及含义都是不同的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式