指向int类型数组的指针的大小是多少?

sha*_*eeq 0 c arrays pointers

我有以下代码

#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如何处理指向数组的指针?

sep*_*p2k 5

'arr'也是指向整数的指针

不,这不对.arr是一个数组.数组的大小是元素的大小乘以元素的数量.如果它是一个指针,它的大小将与任何其他指针相同.

C如何处理数组的指针?

C处理指向数组的指针的方式与处理所有其他指针的方式相同.但是,代码中没有指向数组的指针,只有指向int(ptr)的指针.