gpt4 book ai didi

c - 问)在这个程序中,sizeof [arr]给出的是数组基地址的地址还是arr的大小?

转载 作者:行者123 更新时间:2023-11-30 21:23:15 26 4
gpt4 key购买 nike

#include < stdio.h >

void print(int arr[])
{
int n=sizeof (arr)/sizeof (arr[0]);
int i;
for (i=0; i< n; i++)
{
printf("%d",arr[i]);
}
}
int main()
{
int arr[]={1,2,3,4,5,6};
print(arr);
}

问)在这个程序中,sizeof [arr]给出的是数组基址的地址还是arr的大小?

最佳答案

sizeof(arr)

将返回 int 指针的大小。您可以做的是计算函数外部数组的大小并将其作为函数参数传递

... 3 Except when it is the operand of the sizeof operator, the _Alignof operator, or the unary & operator, or is a string literal used to initialize an array, an expression that has type ‘‘array of type’’ is converted to an expression with type ‘‘pointer to type’’ that points to the initial element of the array object and is not an lvalue. If the array object has register storage class, the behavior is undefined.

arr 将转换为指向 int 的指针,您将获得该指针的大小。另外需要注意的是,arr 和 &arr 之间存在区别。Arr 的类型为 int*,而 &arr 的类型为 int (*)[10]。

关于c - 问)在这个程序中,sizeof [arr]给出的是数组基地址的地址还是arr的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47028860/

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