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

时间:2017-10-31 06:06:07

标签: c arrays

#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的大小?

1 个答案:

答案 0 :(得分:1)

sizeof(arr)

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

  

...   3除非它是sizeof运算符,_Alignof运算符或一元&amp;运算符的操作数。运算符,或者是用于初始化数组的字符串文字,具有类型''数组类型''的表达式将转换为类型为''指向类型'的指针的表达式,指向数组对象的初始元素,不是左值。如果数组对象具有寄存器存储类,则行为未定义。

arr将转换为指向int的指针,您将获得该指针的大小。 同样重要的是要注意arr和&amp; arr之间存在差异.Arr的类型为int *,而&amp; arr的类型为int(*)[10]。