为什么在函数sizeof中返回指针的大小而不返回数组的大小?

时间:2018-08-16 14:07:25

标签: c++ c pointers gcc sizeof

#include<iostream>
using namespace std;
void calcuate_size_in_fun(int y[],char x[],double z[]){

    cout<<sizeof(y)<<" "<<sizeof(x)<<" "<<sizeof(z);

}

int main(){
int a[10];
char c[30];
double v[10];
cout<<sizeof(a)<<" "<<sizeof(c)<<" "<<sizeof(v)<<"\n";
calcuate_size_in_fun(a,c,v);

}

输出:

40 30 80
4 4 4
Process returned 0 (0x0)   execution time : 3.108 s
Press any key to continue.

我正在64位架构intel i5-8th gen处理器上使用带有GCC编译器(32位架构)的code_blocks 17.12。

如果数组的名称是指向其第一个元素的指针,那么为什么选择sizeof(a) main()函数中的函数返回其大小,而不返回指针(32位)的大小。 在calculate_size_in_fun()内部,它给出了变量指针的大小。

为什么指针大小为4个字节(对于所有int,char和double),独立于其存储的值,在calculate_size_in_fun()中。

如果它与编译器的32位体系结构有关,则指针实际上存储在内存中。它如何解释内存中的地址?

0 个答案:

没有答案