gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:00 26 4
gpt4 key购买 nike

我有以下代码

#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;
}

输出是

16
4

C 中指针的大小为 4。'arr' 也是一个指向整数的指针,但其大小为 16,这是一个元素的大小与元素数量的乘积。 另一方面,如果我将同一个指针存储到另一个指针变量中,那么它的大小变为 4。这非常令人困惑。如果我尝试将 arr 作为参数发送给函数,然后在该函数中打印 arr 的大小,也会发生同样的事情。 C 如何处理指向数组的指针?

最佳答案

'arr' is also a pointer to integer

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

How does C handles pointer of array?

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

关于c - 指向 int 类型数组的指针的大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25686723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com