高级语言程序设计课程第七次个人作业
这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C/
这个作业要求在哪里: https://edu.cnblogs.com/campus/fzu/2024C/homework/13304
学号:102400206
姓名:王嘉萍
1.
没问题
3.
有类型转换问题报错
2.
4.a)int a; b)int a; c)int **a; d)int a[10]; e)int (a)[10];
a:定义整型变量a b定义指向整型变量的地址的指针a b 定义指针的指针 d定义整型含有十个变量的数组a e定义指针数组
5.
6.
7.
printf("%d\n", sizeof(a));
输出:48
含义:a是二维数组int[3][4],按行存,共 3×4×4 = 48 字节,sizeof求其总字节数。
printf("%d\n", sizeof(a[0][0]));
输出:4
含义:a[0][0] 是 int 类型元素,sizeof 求 int 类型大小,为 4 字节。
printf("%d\n", sizeof(a[0]));
输出:16
含义:a[0] 是含 4 个 int 元素的一维数组,sizeof 求其大小,即 4×4 = 16 字节。
printf("%d\n", sizeof(a[0] + 1));
输出:4
含义:a[0] 退化为指针,a[0]+1 是指针偏移后仍为指针,sizeof 求指针大小,32 位下为 4 字节。
printf("%d\n", sizeof((a[0] + 1)));
输出:4
含义:(a[0]+1) 解引用得 int 元素,sizeof 求 int 元素大小,为 4 字节。
printf("%d\n", sizeof(a + 1));
输出:4
含义:a 转为指向首行的指针,a + 1 偏移后还是指针,sizeof 求指针大小,为 4 字节。
printf("%d\n", sizeof((a + 1)));
输出:16
含义:(a + 1) 解引用得二维数组的一行(一维数组),sizeof 求该行数组大小,为 16 字节。
printf("%d\n", sizeof(&a[0] + 1));
输出:4
含义:&a[0] 取首行地址,&a[0]+1 偏移后是指针,sizeof 求指针大小,为 4 字节。
printf("%d\n", sizeof((&a[0] + 1)));
输出:16
含义:(&a[0]+1) 解引用得二维数组一行(一维数组),sizeof 求其大小,为 16 字节。
printf("%d\n", sizeof(a));
输出:16
含义:a 等价 a[0],是含 4 个 int 元素的一维数组,sizeof 求其大小,为 16 字节。
printf("%d\n", sizeof(a[3]));
输出:16
含义:虽 a 定义 3 行,但语法上 a[3] 表示含 4 个 int 元素的一维数组,sizeof 求其大小,为 16 字节。
8.
总结:指针是个很有用的工具,要好好学习掌握它