一道C语言指针的问题 求解答 谢谢 !

来自:品购    更新日期:早些时候
一道c语言指针题,求大神解答,感谢~

这题目输出的结果是
5,6,6解析:
首先声明一个整型数组a,整形变量y,整型指针p。
p指向数组a[]的第1个元素,也就是8。
接下来,指针p先--,指向了数组a[]的第0个元素,也就是5。之后y取出p指向的内容,即5。之后p指针指向的内容又累加,即数组a[]的第0个元素从5变成了6。
因此打印输出y的内容是5,*p的内容是6,*p++的内容还是6(printf()执行完之后指针才移动,黄花菜都凉了)。

首先ptr为指向数组a的指针,*ptr 中存的是2,*(ptr+1)中存的是4,*(ptr+2)中存的是6,
判断语句:依次将2,4,6 与 8比,如果小于8,z就依次等于2,4,6;否则等于8。
所以最后输出结果为6。

&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:由上知不相等。

C 和&C不相等,&c 代表整个数组的首地址,C是首元素的地址。&ca 只有当有参数传进来的时候 才有意义。如果 函数 fun(c)这样的话,是相等的。

&c 和&ca : ca是函数里的只是个变量由你赋给谁
++ca 和&c[1] :这两个是两个完全无关的东西、
&ca[1] 和 &c[1]:这与第一个同理
c 和 &c:c是个char变量时数组,&c是指针赋值用的不相等

在定义的时候,系统分配空间给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 按照我上面的比喻应该是不等的,但是我运行了一下,是相等的!
我想应该是因为,组数的元素存放在地址里,地址是最终的存储位子吧,我也不是很明白,知道后和我说下。。。


一道C语言指针的问题 求解答 谢谢 !视频

相关评论:

相关主题精彩

版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

Copyright © 喜物网