mus*_*gDC 2 c parameters gcc mingw
考虑以下代码:
void print(int arr[])
{
int n = sizeof(arr)/sizeof(arr[0]);
printf("\nSize is %d",n);
}
int main()
{
int arr[]={1,2,3,4,5,6};
print(arr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
size is 2
.Size is 1
现在恰恰相反,我们曾经研究过,当一个数组作为参数传递时,它只传递数组的基地址(对于隐式指针变量和整数变量都是4个字节).
可变大小编译器是否依赖,或者我在这里遗漏了什么?请指正
arr[]
,作为函数参数,是一个指针. sizeof(arr)/sizeof(arr[0]);
是一个指针/大小的大小int
.没有涉及阵列.
C编译器中的可变大小是否依赖?
是的,int
可以是32位,16位等1(必须至少16)
对象指针可以是16位,32位,64位等.1(必须至少为16)
指针通常比a宽int
,但可以相同或(很少)更少.比例可以是2/1或1/1或其他.
1其他尺寸是可能的并且已被采用,例如36位int
或48位对象指针.这是C能够采用任何有史以来构建的处理器,并且可能适用于所有新处理器.灵活性是以便携式代码必须考虑这些变化为代价的.
归档时间: |
|
查看次数: |
231 次 |
最近记录: |