sizeof()数组名和指针的结果

32位环境下,int *p=new int[10];请问sizeof(p)的值为()
A、4              B、10              C、40               D、8

正确答案为A,只是指针p占的空间,而不是40,

因此写段代码测试一下:

[cpp]  view plain copy
  1. #include  
  2. using namespace std;  
  3. void fun(int *P)  
  4. {  
  5.     cout<<"在函数中"<<sizeof(P)<
  6. }  
  7. int main()  
  8. {  
  9.     int A[10];  
  10.     int* B=new int[10];  
  11.     cout<<"数组名"<<sizeof(A)<
  12.     cout<<"指针"<<sizeof(B)<
  13.     fun(A);  
  14. }  

结果输出:

数组名40
指针4
在函数中4

但是数组在作为函数参数传递过程中,会退化成指针。因此,函数内数组名的sizeof为4.

你可能感兴趣的:(C语言基础)