一维数组笔试题及其解析

Lei宝啊 :个人主页

愿所有美好不期而遇



前言:

数组名在寻常情况下表示首元素地址,但有两种情况例外:

1.sizeof(数组名),这里的数组名表示整个数组,计算的是整个数组的大小

2.&数组名,这里的数组名表示整个数组,取出的是整个数组的地址

3.sizeof是操作符,不是函数,并且sizeof不计算括号里的表达式,他会在编译阶段检查括号里的表达式的类型属性,计算出大小。(任何表达式都有两种属性,值属性和类型属性,

int a = 3; short b = 2; b = a + b;这个表达式的值属性就是5,类型属性就是short)

前言很重要,记住哦~

笔试题(一维数组)

int a[] = { 1,2,3,4 };

printf("%d\n", sizeof(a));

printf("%d\n", sizeof(a+0));

printf("%d\n", sizeof(*a));

printf("%d\n", sizeof(a+1));

printf("%d\n", sizeof(a[1]));

printf("%d\n", sizeof(&a));

printf("%d\n", sizeof(*&a));

printf("%d\n", sizeof(&a+1));

printf("%d\n", sizeof(&a[0]));

printf("%d\n", sizeof(&a[0]+1));

先自己做再看答案和解析哦~

答案

16

8

4

8

4

8

16

8

8

8

(博主用的是64位机器,所以地址占的空间大小为8字节)

解析

复制代码
int main()
{
	int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));     
	//sizeof里只有数组名,计算的是整个数组的大小,16个字节

	printf("%d\n", sizeof(a+0));    
	//这里并不是单独的数组名,也许你看着加0之后还是a,但此时的
	//数组名意义已经变成了首元素地址,所以为4/8,(看机器位数)

	printf("%d\n", sizeof(*a));     
	//首元素为int类型,4个字节

	printf("%d\n", sizeof(a+1));    
	//这个和a+0是一个道理,指向第二个元素,是地址,4/8

	printf("%d\n", sizeof(a[1]));   
	//第二个元素,int类型,4个字节

	printf("%d\n", sizeof(&a));     
	//&a,指针类型int (*) [4],但还是指针,4/8

	printf("%d\n", sizeof(*&a));
	//这个有两种理解方式:
    //1.&a后再解引用还是a,也就是说还是只有a,所以计算整个数组大小
	//2.&a的指针类型是int (*) [4],是数组指针,解引用访问的是
	//  int [4],是整个数组,16个字节,这就类似于int* 解引用后访问的是
	//  int类型的数据,4个字节,char* 解引用后访问一个字节的数据。

	printf("%d\n", sizeof(&a+1));   
	//数组指针加1,和我们的数组其实已经没有关系了,这里加1的是这个指针
	//,所以4/8

	printf("%d\n", sizeof(&a[0]));  
	//首元素的地址,4/8

	printf("%d\n", sizeof(&a[0]+1));
	//第二个元素的地址,4/8

	return 0;

}

相关推荐
爱笑的眼睛112 小时前
8 月中 汇报下近半个月都在做些什么
经验分享
肉夹馍不加青椒2 小时前
第三十三天(信号量)
java·c语言·算法
古译汉书2 小时前
嵌入式-SPI番外之按钮驱动程序的编写-Day15
c语言·stm32·单片机·嵌入式硬件·mcu·算法
knd_max3 小时前
C语言:字符函数与字符串函数(1)
c语言
444A4E5 小时前
深入理解Linux进程管理:从创建到替换的完整指南
linux·c语言·操作系统
敲上瘾5 小时前
Linux I/O 多路复用实战:Select/Poll 编程指南
linux·服务器·c语言·c++·select·tcp·poll
海天胜景6 小时前
编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET... 拒绝访问
c语言·windows
草莓熊Lotso7 小时前
【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day8
c语言·开发语言·c++·刷题·强化训练
我要学习别拦我~8 小时前
读《精益数据分析》:规模化(Scale)—— 复制成功,进军新市场
经验分享·数据分析
pusue_the_sun17 小时前
数据结构:二叉树oj练习
c语言·数据结构·算法·二叉树