数组和指针笔试题分析

目录

数组笔试题

一维数字数组

字符数组

题目1

答案1

题目2

答案2

题目3

答案3

题目4

答案4

*题目5

*答案5

*二维数组

题目

答案

*注

指针笔试题

笔试题1

答案

*笔试题2

答案

解析

笔试题3

题目

答案

解析 

笔试题4

题目

答案

解析

笔试题4

题目

答案

解析

笔试题5

题目

​编辑答案

解析

笔试题6

题目

答案

*笔试题7

题目

答案

解析 

易错题


数组笔试题

注:

sizeof(数组名)计算的是整个数组。

&数组名取出意义上为整个数组的地址,实际为首地址,移动单位为一个数组。

一维数字数组

题目

答案

字符数组

题目1

答案1

题目2

答案2

题目3

答案3

题目4

答案4

*题目5

*答案5

*注:

1.由指针创建的数组,其指针名称不为数组名称,故sizeof(p)计算为指针变量的大小。

2.&p在这里是取指针变量p的地址。

3.&p的移动单位为指针值(4/8 )。

4.&p到&p+1之间可能存在0,会使strlen直接结束。

 

*二维数组

题目

答案

*注

1.对于二维数组,数组名表示第一行的所有元素构成的数组地址

2.a[0] 等价于 *(a + 0),用sizeof计算出来是第一行所有元素构成的数组的大小。

3.sizeof()内的表达式并不会,计算和访问,通过类型属性计算出大小。

因此a[3]并不会出现非法访问而报错,a[-1]也可以用sizeof计算出相应的值。

指针笔试题

笔试题1

答案

输出结果为 2,5

*笔试题2

答案

0x100014

0x100001

0x100004

解析

  1. 首先计算结构体的大小:4+4(补偏移量)+8+2+2+4(补偏移量)+8 = 32(最大成员变量的倍数关系)----->0x20(十六进制)
  2. p + 0x1移动一个结构体大小的单位。
  3. (unsigned long)将p强制转换为long类型,(转换后)p + 0x1变为数值加1,而非移动。
  4. (unsigned int*)将p强制转换为unsigned int*类型,加上后移动4字节(指针存储的地址移动)。

笔试题3

题目

答案

 0x4,0x2000000

解析 

笔试题4

题目

答案

1

解析

笔试题4

题目

注:指针相减得到的是之间的元素个数

答案

0xFFFFFFFC(补码形式直接输出地址)

-4

解析

笔试题5

题目

答案

10

5

解析

1.&aa + 1是跳过整个数组。

2.aa作为数组名,可以表示为第一行所有元素构成的数组的地址

即:aa == &aa[0]         aa != aa[0]

笔试题6

题目

答案

输出为at

*笔试题7

注:*与++和--的优先级相同

题目

答案

POINT

ER

ST

EW

解析 

第二个打印输出的路线

 

此时cpp的值发生改变,c + 1变为了c

易错题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值