首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
若有定义;int w[3][5];,则以下不能正确表示该数组元素的表达式是( )。
若有定义;int w[3][5];,则以下不能正确表示该数组元素的表达式是( )。
admin
2013-02-23
72
问题
若有定义;int w[3][5];,则以下不能正确表示该数组元素的表达式是( )。
选项
A、*(*w+3)
B、*(w+1)[4]
C、*(*(w+1))
D、*(&w[0][0]+1)
答案
2
解析
通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a
和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-C) 等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w
[j]等价于(w
[j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i)[j]或*(w
+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w
[j]。选项A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正确的。选项B小,因为[]运算符的优先级高于*运算符,所以*(w+1)[4]等价于*((w+1)[4]等价于 *(*((w+1)+4)),即*(*(w+5)+0),它等价于w[5][0],很明显它超过数组的范围了,故不正确。选项C等价于w[1][0],是下确的。选项D中,&w[0][0]是数组w第1个元素的地址,它等价于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以个数,然后再除以这个数一样。所以,&w[0][0]等价于*(w+0)+0。即*w。所以原式就变为*(*w+1)等价于w[0][1],这个也是合法的。综上所述,本题应该选择B。
转载请注明原文地址:https://www.kaotiyun.com/show/1HJp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
用复合的赋值运算符将变量x中的值增大2的赋值表达式是【】。
在16位C编译系统上,若定义longa;,则能给a赋值40000的正确语句是()
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){inti;for(i=0;【】!=’\0’;i++);
下面函数调用语句含有实参的个数为func((exp1,exp2),(exp3,exp4,exp5));
对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。
定义长度为12的数组,下面四种方法中正确的有【】。①intx[12];②intn=12;③constintn=12;④intx[]={1,2};int
以下叙述中错误的是______。
按照逻辑结构分类,数据结构可分为线性结构和非线性结构,二叉树属于【】。
下列不属于静态测试方法的是______。
已知字符A的ASCII代码值为65,以下程序运行时,若从键盘输入:B33<回车>。则输出结果是______。 #include "stdio.h" main() { char a,b; a=getchar();scanf("Xd",&b); a=a-’A’
随机试题
Theyusuallyhavelessmoneyattheendofthemonththan______atthebeginning.
两人搬运患者的正确方法是()。
可作为确诊白血病及其类型的重要依据的检查是
金某是个吸毒人员,晚上经常和几个被害人一起打麻将,每次打到半夜三更的时候,金某就说毒品能提神解乏,极力鼓励被害人一起吸食毒品,最后导致金某的众多牌友都染上了毒瘾。对金某的行为定性,下列选项错误的是:()
证券管理机关对证券市场实行监管采取的主要手段是()。
下列情形不能引发债务人之间的违约相关性的是()。
在运动过程中,由于损伤导致前臂出血时,应及时指压()。
如右图,一个正方体的表面上分别写着连续的6个整数,且每两个相对面上的两个数的和都相等,则这6个整数的和为()
Formostofhumanhistoryrichpeoplehadthemostleisure.Ontheotherhand,thepoorhavetypicallyworkedpersistently.Hans
Accordingtothepassage,whendidHerakleionandEasternCanopusdisappear?Accordingtotheauthor,thefortunesofHerakleio
最新回复
(
0
)