栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

大数据实验室第一次考核

大数据实验室第一次考核

 此题中,A选项std.name本身对应的是数组类型,数组类型在使用scanf函数的时候不需要使用&,该符号意为取地址,但是数组名本身就是地址,所以不需要取地址符号,所以A错误

至于C,*p的含义为对指针p进行解引用操作,解引用操作将p指向std,但是在这个式子中,std.gender对应只是字符型,字符型在进行输入的时候要应用&,所以C应当是正确的

此题中,A的意思为响铃,B没有任何意义,C的意义为退格,D的意义为注释

二维数组的定义时,第一维的大小可以为空,但是第二维也就是列的数值必须确定,因为在电脑中数组本身存储的方式是一维线性存储,如果不确定列的大小,就会直接将二维数组中的所有数字全部存在第一维,如果确定了列,也就是确定了一行中能够存储的数据数量,那么这些数字要存储多少行计算机会自己计算,所以ABD都是错误的。

 枚举类型就是从第一个确定数值的元素开始向下递增,题中已经确定Sun、Mon、Tue的数值,所以从Wed开始向下数,数到Fri正好是3,所以B正确

 此题涉及到对指针和数组名本身的运用

例如&数组名代表的就不再是数组的首元素地址,而是代表的是数组一整个的地址,但是如果进行打印还是数组的首个元素地址,区别在于对其进行+1操作的时候,如果对&数组名进行+1,此时跳过的并不是一个元素,二是数组中的全部元素,从存储数组的存储条的首个位置直接跳到存储条的末尾位置,此时指向的不再是数组的首元素,也不是数组的末尾元素,而是数组所占据内存之后的内存,此时如果再次进行访问就是非法访问,此时的指针也是一个野指针。所以在题中的ptr现在就是一个野指针,数组名本身指向数组的首元素,对其进行+1操作,会将数组名指向的位置移到数组所对应的下一个元素,则在题中打印的时候,*(a+1)所对应的元素应该是数组中的第二个元素也就是2,*(ptr-1)对应的应该是数组的最后一个元素。注意,在这个地方,指针本身是一个int类型的指针,在进行解引用的时候移动四个字节,之所以从数组首位跳跃至数组末尾,是因为对数组名的利用,与指针本身的数据类型没有关系。

此题涉及到二维数组的特殊形式存储

比如图中数组int a[3][2]={(0,1),(2,3),(4,5)}

此时对数组的存储形式不是如下表格的形式

01
23
45

 而是完全相反的一种形式

1

3

50
00

数组中会将(0,1)整体视为第一个元素,此时所对应的存储应该是存储数据1,而之后的1,2,4全部都会丢失,是没有办法顺利存储进入二维数组的。

图中指针所指向也并没有问题,确实是指向数组中的a[0][0],但是如图所示a[0][0]不再是0,a[0][0]的值此时的所对应应当是1

不同的地方在于const所修饰的东西不同

char*const p意味着指针本身的值不可以修改,p是字符型常量指针,指针本身就是常量

char const*p意味着指针所指向的值是常量,p是字符型指针指向一个常量值

const char*p与char*const p相同,const修饰的量都是指针,与指针所指向的东西没有关系。是指针本身的值没有办法修改

 题中我所回答的代码错误在于自定义函数,void*swap()此处的viod之后的*是完全没有必要的,因为既然已经是void类型了,就无需再返回任何东西,加了*意味着要返回指针,但是实际上根本不会返回任何东西,所以函数末尾的return 0也是错误的,因为根本不需要返回。

回答的时候要回答到根本,从数据的存储时开始分析,结构体中的成员占用不同的内存,且彼此之间互不影响,而对于共用体而言,所有成员占据同一块内存,对其中任何一个成员修改的时候都势必会影响除他之外所有成员。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650351.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号