sizeof的用法

同学让我看了一道题:

int getsize(char p[100]="hello")
{
 return sizeof(p);
}
int main(int argc, char* argv[])
{
 char a[200]="hello!";
 cout<<sizeof(a)<<endl<<getsize("OK")<<endl;
 return 0;
}
第一个返回200,第二个却返回4,sizeof(a)返回数组的大小,而第二个实际上是指针变量的大小,怎么回事呢?
在网上看到强人分析的MSDN才知道原因:
sizeof操作的是一个结构体或者变量时,返回值为它的实际大小,这个实际大小可能包括为了字节对齐插入的多余字节。
第二句:如果操作的是一个静态大小的数组,返回整个数组的大小
第三句:sizeof操作符不能返回动态开辟的数组或形参数组的大小。
如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小,所以是4 

原文地址:https://www.cnblogs.com/xiangshancuizhu/p/1985270.html