网站建设实训课指导书网站版式分析,品牌营销策略有哪些方法,网站做,图书馆主题 wordpressLei宝啊 #xff1a;个人主页
愿所有美好不期而遇 前言#xff1a; 数组名在寻常情况下表示首元素地址#xff0c;但有两种情况例外#xff1a; 1.sizeof(数组名)#xff0c;这里的数组名表示整个数组#xff0c;计算的是整个数组的大小 2.数组名#xff0c;这里的…
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(a0)); printf(%d\n, sizeof(*a)); printf(%d\n, sizeof(a1)); printf(%d\n, sizeof(a[1])); printf(%d\n, sizeof(a)); printf(%d\n, sizeof(*a)); printf(%d\n, sizeof(a1)); 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(a0)); //这里并不是单独的数组名也许你看着加0之后还是a但此时的//数组名意义已经变成了首元素地址所以为4/8看机器位数printf(%d\n, sizeof(*a)); //首元素为int类型4个字节printf(%d\n, sizeof(a1)); //这个和a0是一个道理指向第二个元素是地址4/8printf(%d\n, sizeof(a[1])); //第二个元素int类型4个字节printf(%d\n, sizeof(a)); //a指针类型int (*) [4],但还是指针4/8printf(%d\n, sizeof(*a));//这个有两种理解方式//1.a后再解引用还是a也就是说还是只有a所以计算整个数组大小//2.a的指针类型是int (*) [4]是数组指针解引用访问的是// int [4],是整个数组16个字节这就类似于int* 解引用后访问的是// int类型的数据4个字节char* 解引用后访问一个字节的数据。printf(%d\n, sizeof(a1)); //数组指针加1和我们的数组其实已经没有关系了这里加1的是这个指针//所以4/8printf(%d\n, sizeof(a[0])); //首元素的地址4/8printf(%d\n, sizeof(a[0]1));//第二个元素的地址,4/8return 0;}