有以下定义语句 double a b int w long c
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/07 09:59:35
inta[2][3],*p[3];因为[]的优先级比*高所以p是一个数组,这个数组存放的是指向整数的指针.即存放的是一个整数变量的地址.而&a[1][2]正好是一个整数的地址.所以p[0]=&a[1]
*q就是访问q所指向的地址里面的值;但是此时的q已经为空了.所以这样访问取值为非法.程序会崩溃.选A采纳哦
第一次是指针赋值,第二次是指针的引用对象赋值,所以A错r的地址赋给了p,不是p所指的存储单元,B错赋给的是p指向的变量,C错选D
'f'a[]首先是一个数组,strcpy操作改变了前4个元素,但第5,6,7元素没有被改变,所以还是'e''f'和'\0'
A)inta=b=0;//b未定义B)charA=65+1,b='b';//正确C)floata=1,*b=&a,*c=&b;//*c=&b,应该是*c=bD)doublea=0.0;b=1.1;//
答案是B,DA:等价于a=(b=0),即b=0;a=b.先对b赋0,然后再传给a,但是=右边必须是量,所以不正确.C:C是指向指针的指针,应该为**c=&b再问:答案给的是B,所以我觉得D也是对,所以
呵呵,这个问题很简单A选项,涉及到运算符优先级问题.首先b++,运算,然后再a+b,再将b++赋值给一个常量(a+b)明显是错误的了.D首先判断a是否等于b,如果成立则将1赋值给w,否则将0赋值w
话说只有C是正确的吧A和B使用了非整形表达式,switch里只能用整形表达式,字符会被转换成整形,case里只能用常数,并且各异而D的switch后面有个分号switch(a-b);再问:话说只有D是
C正确,++,%操作符不能用于double,所以A,B错D错误,==操作符不能用于double,因为double类型只有7个有效字,最后一个是估计
很明显是B,B中定义了一个只有5个元素的整形数组,却给它赋了6个值,明显的错误.D中的单引号不可以去,这是对字符型数组赋值的必要格式,去掉肯定出错.总之,B错误确定!
floatx[3][3]={{1.0,2.0,3.0},{4.0,5.0,6.0}}定义三行三列,只初始化第一行和第二行,则第三行三个数据被默认设置为0x[2][2]就是指第三行第三列的数据,值为0因
A.*说明是double类型的指针,存放相应的地址.
inta[3][2]={1,2,3,4,5,6}产生的结果是a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6根据数组的表示法,数组
D.其实是一个链表,p->n指的就是其中的值,p++则指向下一个元素.Ap++->n相当于(&a[0]->n),于是是5Bp->n++相当于(&a[0]->n)++,也是5C(*p).n++相当于(a
指针变量pt指向a数组!*pt相当于a[0];*(pt+1)相当于a[1];*(pt+1)[2]相当于*(pt+3);*(pt+3)等价于a[3];显然a[3]不存在!所以选项B非法!
a.p=a+2a是指针p是指针p=a+2合法,不过题中P大写不正确b.p=a[5]类型不匹配c.p-a[2]+2类型不匹配d.p=&(i+2)不能取表达式地址
B.inty[5]={0,1,3,5,7,9};有6个数了
第四个是正确的,二维数组在定义时,必须指定列数
c没变是因为逻辑判断短路.跟运算优先级没有关系的.当++,--是后置时,优先级是做表达式,再执行自增或自减.你这个if,条件a++再问:就是说后自增是表达式运算完了之后值才发生变化吧,这样的话整条式子
C选项是错的A选项*(p+i)为p[i][0]的地址,*(p+i)+j为p[i][j]的地址,*(*(p+i)+j)也就是p[i][j]的值B选项中p[i]相当于*(p+i),其他跟A一样了C选项,如