若有下列定义,则对a数组元素地址的正确引用是() int a[5],*p=a;
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/08 04:05:35
![若有下列定义,则对a数组元素地址的正确引用是() int a[5],*p=a;](/uploads/image/f/6977123-35-3.jpg?t=%E8%8B%A5%E6%9C%89%E4%B8%8B%E5%88%97%E5%AE%9A%E4%B9%89%2C%E5%88%99%E5%AF%B9a%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E5%9C%B0%E5%9D%80%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%BC%95%E7%94%A8%E6%98%AF%28%29+int+a%5B5%5D%2C%2Ap%3Da%3B)
A:下标越界,数组大小为5时,下标范围为0-4B:a+2是数组第3个元素的地址C:越界,类似AD:正确
A答案:就是w[0][2],合法B答案:就是w[2][0],下标越界,不合法C答案:就是w[0][0],合法D答案:就是w[1][2],合法
答案是D.A项,由于a[5]已经超出数组外了,所以*&a[5]不是数组元素.B项,a+2是a[2]的地址,不是数组元素.C项,*(p+5)相当于a[5],已经超出数组范围,不是数组元素.D项,正确,*
只有D一个对的AC超出数组范围B是地址
C正确Aa【2】【3】错误a[2]越界Ba〔1,2〕,语法错误Ca〔0〕〔1+1〕正确,等同于a[0][2]Da(1)(2)不能用小括号来引用
这里所说的不能加减是指这样:a=p+2;这种形式的,而不是图上那种.举个简单的例子:constinta=2;a是一个常量,你不能改变其值.但是intb=a+2是正确的.指针同样理解.再问:你的意思是不
选择:D数组下标从0开以,最大下标是定义的数组长度-1下标值不能是浮点数只能是[]而不能是()
正确答案是:D*&a[5]就是a[5],下标越界了*a就是a[0],a[0]+2不是对数组元素的正确引用同理,*(p+5)就是a[5],下标越界了而*(a+2)就是a[2]
a[2][4]越界了最后一个元素a[2][3]引用时下标从0开始第一行a[0][0]a[0][1]...第三行a[2][0]a[2][1]...
共有5个元素,前三个是1,2,3,后面的两个空.下标从0开始,到4结束,所以最大是4
应该是p+2与&a&a[5]越界,a++语法错误,数组名可看作一个指针常量,不可修改
首先,指针是特殊的变量,比如int*p;如果不加*号,你可以把p当做一个普通变量,而这个变量中存放的东西是一个内存地址.如果你只想得到这个地址,直接用p,但是如果你想得到这个地址中存的数据内容,就要加
指针变量pt指向a数组!*pt相当于a[0];*(pt+1)相当于a[1];*(pt+1)[2]相当于*(pt+3);*(pt+3)等价于a[3];显然a[3]不存在!所以选项B非法!
选C.p的类型是int(*)[3],是指针的指针.C选项相当于p[1][1].B选项错,它相当于p[2][1],数组的第一个坐标越界了.
答案是对的.再问:c选项为什么是错的?再答:因为超出范围了最多*(pt+9)如图:看看你*(pt+10)结果是多少?
是错的;这对新手应该是个很隐蔽的错误,这里定义了inta[10];那么这里指针a是个常量,不能用于自加也就是说a的值时不能改变的,不能像a++这样
D显然是a[5]就越界了.a是因为对p+5的地址进行解引用的出来的不知道是什么哦再问:答案是C,A怎么错了能具体说下吗再答:p是指针它的地址加5的话只是他的地址加了变成了别的内存单元而和原来p指向的内
选择D,这是一个二维数组指针的问题.
[1]是b[1][0]的地址,不是元素b[0][3],3超过界限2b[2][2]第一个2超界限b[1][1]正确b【2】【3】,元素范围b[0][0]-b[1][2]
//intx[10],*p=x;,则*(p+5)表示().intx[10],*p=x:表示定义了一个数组,让p指向了x这个数组,数组名是地址常量,把地址常量保存在指针变量里边了.而这时候指针可以写成数