若有以下说明和语句,则()是对c数组元素的正确引用
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/27 21:45:39
![若有以下说明和语句,则()是对c数组元素的正确引用](/uploads/image/f/6977156-68-6.jpg?t=%E8%8B%A5%E6%9C%89%E4%BB%A5%E4%B8%8B%E8%AF%B4%E6%98%8E%E5%92%8C%E8%AF%AD%E5%8F%A5%2C%E5%88%99%28%29%E6%98%AF%E5%AF%B9c%E6%95%B0%E7%BB%84%E5%85%83%E7%B4%A0%E7%9A%84%E6%AD%A3%E7%A1%AE%E5%BC%95%E7%94%A8)
定义数组时用的是常量表达式,而引用数组元素时可以使常量还以是整型表达式
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
A答案:就是w[0][2],合法B答案:就是w[2][0],下标越界,不合法C答案:就是w[0][0],合法D答案:就是w[1][2],合法
话说只有C是正确的吧A和B使用了非整形表达式,switch里只能用整形表达式,字符会被转换成整形,case里只能用常数,并且各异而D的switch后面有个分号switch(a-b);再问:话说只有D是
25-9赋值为0,有的系统对5-9不赋值,所以是随机数
d,只有指针才能用->这个符号,此题中B就可以写成:p->no
看错了,第一题很简单,选B;第二题应该是选C
A.p2=&p1,p2不是双指针B,p2=&n,n还没有赋值C,正确D,*p2=*p1;原来p2还没初始化,即没有分配内存应该这样:p2=newint[1];*p2=*p1;希望对你能有所帮助.
如果不考虑内存对齐的话,结构体所占内存为各成员所占内存之和2+10+2+4=18
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根据数组的表示法,数组
选BAp本身就是数组c的首地址了,再对它取地址没有语法错误,但是也没有实际意义Bp+3是c[3]的地址,*(p+3)就是c[3]Cc[5]数组下标越界Dc也是数组c的首地址,同A
A.p2=&p1,p2不是双指针B,p2=&n,n还没有赋值C,正确D,*p2=*p1;原来p2还没初始化,即没有分配内存应该这样:p2=newint[1];*p2=*p1;
C是对的A的那个4已经超出范围了B,没有这种写法D不能用圆括号,只能用方括号
指针变量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],数组的第一个坐标越界了.
A应该是错误的.他是不能这样表示的.B选项:C语言在编译的时候会为数组分配内存,所以在编译好运行的时候a的地址是确定的了.它后面是一块连续的内存.此时意味着a是一个常量,常量是不能做自增运算的.C选项
选A,因为数组的下标是从0开始的,所以正确的引用是a[0~1][0~3],超过这个范围会提示数组越界
A正确其中p1存放m的地址,p2存放p1的地址值.B错误因为p1p2的地址没有指向,此时它们会指向未确定区域,那么很可能会有危险.我们称其为“野指针”.C正确p1和p2均存储m地址D错误p2野指针