初学C语言笔记220929指针笔试题_一维数组

输出2 5   数组类型指针强制类型转换成int*


初学C语言笔记220929指针笔试题_补码_02

输出:  0x100014     0x100001    0x100004 


初学C语言笔记220929指针笔试题_补码_03

0x4   0x2 00 00 00  一个字节8个比特位

初学C语言笔记220929指针笔试题_一维数组_04


初学C语言笔记220929指针笔试题_数组_05

大括号里面是圆括号,sun


初学C语言笔记220929指针笔试题_数组_06

p指向a的起始地址,p是一个含4个整形元素的指针

p = a;  等价于    int () [4] = int () [5];

p[4] 等价于*(p+4)                p[4][2] 等价于*(*p+4)+2)

结果-4的补码当作地址输出,而地址是无符号数,输出FF FF FF FC

初学C语言笔记220929指针笔试题_一维数组_07


初学C语言笔记220929指针笔试题_数组_08

*(aa+1) 相当于aa[1], 第二行的地址解引用,就是第二行首元素的地址

初学C语言笔记220929指针笔试题_一维数组_09


初学C语言笔记220929指针笔试题_数组_10


关于指针指向数组详细说明:

初学C语言笔记220929指针笔试题_补码_11

初学C语言笔记220929指针笔试题_补码_12

&a代表整个数组 &a+1代表路过整个数组的下一个同类型int[2][5]*的数组

a代表二维数组首元素地址 *a代表int[5]一维数组的首元素地址 

初学C语言笔记220929指针笔试题_数组_13


初学C语言笔记220929指针笔试题_一维数组_14

head bigger!


初学C语言笔记220929指针笔试题_补码_15

pa+1 首元素地址加上一个char*型长度,即第二个元素


初学C语言笔记220929指针笔试题_补码_16


这个图再画一遍

初学C语言笔记220929指针笔试题_一维数组_17