如这里有3个一维数组 array_a_1dim[4]=[23,1,67,4] ; array_b_1dim[4]=[3,1,7,2] ; array_c_1dim[4]=[33,1,17,24] 。
所以一维数组内每个元素大小是sizeof(int),因此用到malloc中接受sizeof(int)的左值就是int *
另外我们知道一维数组的数组名就是这个数组的首地址,如array_a_1dim就是第一个数组的地址。
二维数组 array2dim[3][4],可以理解成 array2dim[3]=[array_a_1dim, array_b_1dim, array_c_1dim] 所以array2dim装的就是三个地址,所以它的每个元素大小是sizeof(int *),因此用到malloc中接受sizeof(int *)的左值就是int **
就是一级指针和二级指针的区别
n个星就是n级指针
就像数组可以有多个维度一样,指针也可以有多个级别,有指针的指针,指针的指针的指针
一维数组对应一级指针,二维数组对应二级指针
sizeof就是求类型占用空间的大小,你要给数组分配内存首先得知道单个元素占用空间的大小,再乘以数组长度
如果这里类型不匹配,会报警告,但是不影响运行