这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否作为右值”的讨论。 如果想实现指针赋值,可以这样int(*p)[4] = a;这样定义你就可以理解,p是一个指针,指向int[4]一维数组 新战场:https...
二维数组名相当于指针,但是它是一个指向数组类型(也就是整型或者字符型,具体取决于你数组的定义)。而二级指针在真正意义上也是一个指针,但它是一个指向指针的指针。在寻址时,拿整型数组举例,直接引用数组名,系统会在数组名指向的地址往后寻址2个字节得到一个整型数字。而引用二级指针时,系统会在...
指针指向的类型实际是不同的。 数组在赋值的时候,会作为指针;但是在计算长度的时候,又变成了数组,这就是C语言的一些坑) 这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否...
a指向一维的int数组,内存大小为sizeof(int)*数组长度;而p只是指向一个int*类型指针,内存大小为4。指针指向的类型实际是不同的。这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数...