我有以下代码
#include <stdio.h>
int main(void) {
int arr[] = {10,20,30,40};
int* ptr = arr;
printf("%d\n",sizeof(arr));
printf("%d",sizeof(ptr));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是
16
4
Run Code Online (Sandbox Code Playgroud)
C中指针的大小为4.'arr'也是指向整数的指针,但其大小为16,这是一个元素大小和元素数量的乘积.另一方面,如果我将相同的指针存储到另一个指针变量中,那么它的大小就变为4.这非常令人困惑.如果我尝试将arr作为参数发送到函数然后在该函数中打印arr的大小,则会发生同样的事情.C如何处理指向数组的指针?
'arr'也是指向整数的指针
不,这不对.arr是一个数组.数组的大小是元素的大小乘以元素的数量.如果它是一个指针,它的大小将与任何其他指针相同.
C如何处理数组的指针?
C处理指向数组的指针的方式与处理所有其他指针的方式相同.但是,代码中没有指向数组的指针,只有指向int(ptr)的指针.