#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的大小?
答案 0 :(得分:1)
sizeof(arr)
将返回指向int的指针的大小。 你可以做的是计算函数外部数组的大小,并将其作为函数patameter传递
... 3除非它是sizeof运算符,_Alignof运算符或一元&amp;运算符的操作数。运算符,或者是用于初始化数组的字符串文字,具有类型''数组类型''的表达式将转换为类型为''指向类型'的指针的表达式,指向数组对象的初始元素,不是左值。如果数组对象具有寄存器存储类,则行为未定义。
arr将转换为指向int的指针,您将获得该指针的大小。 同样重要的是要注意arr和&amp; arr之间存在差异.Arr的类型为int *,而&amp; arr的类型为int(*)[10]。