数组在赋值的时候,会作为指针;但是在计算长度的时候,又变成了数组,这就是C语言的一些坑) 这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否作为右值”的讨论。 如果想实现指针赋值,可以这样...
指针位移和数组下标对应计算好就可以直接赋值了。
指针指向的类型实际是不同的。 数组在赋值的时候,会作为指针;但是在计算长度的时候,又变成了数组,这就是C语言的一些坑) 这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数组名能否...
a指向一维的int数组,内存大小为sizeof(int)*数组长度;而p只是指向一个int*类型指针,内存大小为4。指针指向的类型实际是不同的。这里你可能又有疑惑,为啥int b[10]一维数组就可以赋值给int* pb = b呢,这是因为数组退化到指针,只有第一维的数组可以不确定数组长度,可以直接作为首地址。有“数...