一道C语言指针的问题 求解答 谢谢 !
17.charc[]=”abcdefg”;voidfun(charca[10]){};调用函数。请问&c和&ca是否相等?++ca和&c[1]是否相等?请问&ca[1]和...
17.char c[]=”abcdefg”; void fun(char ca[10]){}; 调用函数。 请问 &c 和&ca 是否相等?
++ca 和&c[1] 是否相等? 请问 &ca[1] 和 &c[1] 是否相等? 请问c 和 &c 是否相等? 展开
++ca 和&c[1] 是否相等? 请问 &ca[1] 和 &c[1] 是否相等? 请问c 和 &c 是否相等? 展开
4个回答
展开全部
&c和&ca:这两个是肯定不相等的,c是指向字符串的首地址即c的值等于字符串的首地址,而c本身需要一个地址空间存放即&c(就像i=3,i的值等于3,而&i是存放3的地址)。当把c[]传入fun时,ca也指向该字符串即ca的值等于c的值的副本,而这个值也许要一个地址空间存放即&ca。所以他们不相等。
++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c[]传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。
&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。只是若编写程序验证时,若先验证++ca则验证&ca[1]之前先要ca--。
c和&c:由上知不相等。
++ca和&c[1]:这两个值是相等的,他们都是存放b的地址。这里要理解的是,把c[]传入fun时并没有创建整个字符数组的副本,只是创建了指针c的副本,所以c和ca同时指向一个字符串。
&ca[1]和&c[1]:这两个值也相等,他们和上面的其实是一个意思。只是若编写程序验证时,若先验证++ca则验证&ca[1]之前先要ca--。
c和&c:由上知不相等。
展开全部
C 和&C不相等,&c 代表整个数组的首地址,C是首元素的地址。&ca 只有当有参数传进来的时候 才有意义。如果 函数 fun(c)这样的话,是相等的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
&c 和&ca : ca是函数里的只是个变量由你赋给谁
++ca 和&c[1] :这两个是两个完全无关的东西、
&ca[1] 和 &c[1]:这与第一个同理
c 和 &c:c是个char变量时数组,&c是指针赋值用的不相等
++ca 和&c[1] :这两个是两个完全无关的东西、
&ca[1] 和 &c[1]:这与第一个同理
c 和 &c:c是个char变量时数组,&c是指针赋值用的不相等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-12
展开全部
在定义的时候,系统分配空间给c[]和ca[];其实你可以理解成c和ca是两条街道,组数里面的元素是街道的小房子,[]里面的数就是门牌号码。这样好理解吧。。。。
当然,要求是你调用 void fun(char ca[10]){}; 的时候,理解成街道一模一样,房子里面的构造也一样,但是地址不一样。
&c 和&ca 分别表示c街道的第一间房子的地址和ca街道的第一间房子的地址,但是c和ca两条街道地址本来就不一样啊。
++ca 和&c[1]是不相等的,ca的地址和c的地址是不一样的,用回上面的比喻,++ca理解成第一间房子的后面一间房子的地址,&ca[1]理解成ca街道第一间房子的地址。
&ca[1] 和 &c[1] 仿照第一问。
所以&c 和&ca 不相等,++ca 和&c[1]不相等,
c 和 &c 按照我上面的比喻应该是不等的,但是我运行了一下,是相等的!
我想应该是因为,组数的元素存放在地址里,地址是最终的存储位子吧,我也不是很明白,知道后和我说下。。。
当然,要求是你调用 void fun(char ca[10]){}; 的时候,理解成街道一模一样,房子里面的构造也一样,但是地址不一样。
&c 和&ca 分别表示c街道的第一间房子的地址和ca街道的第一间房子的地址,但是c和ca两条街道地址本来就不一样啊。
++ca 和&c[1]是不相等的,ca的地址和c的地址是不一样的,用回上面的比喻,++ca理解成第一间房子的后面一间房子的地址,&ca[1]理解成ca街道第一间房子的地址。
&ca[1] 和 &c[1] 仿照第一问。
所以&c 和&ca 不相等,++ca 和&c[1]不相等,
c 和 &c 按照我上面的比喻应该是不等的,但是我运行了一下,是相等的!
我想应该是因为,组数的元素存放在地址里,地址是最终的存储位子吧,我也不是很明白,知道后和我说下。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询