#include <iostream.h>
#include <string.h>

void fun(char str[6])//退化为指针
{
cout << sizeof(str) << endl;
}

void main(void)
{
char str[13]="Hello world!";
char *pStr="Hello world!";
cout<<sizeof(str)<<endl;
cout<<sizeof(pStr)<<endl;
cout<<strlen(str)<<endl;
cout<<strlen(pStr)<<endl;

 

char str2[] = "hello";
cout << sizeof(str2) << endl;//注意字符串常量后面有隐含的’\0’,所以输出6

fun(str2); //输出4,即一个指针所占的内存大小
//指针的sizeof永远是4字节(32位系统)或8字节(64位系统),而不管指针是什么类型的,指针的类型只是决定了它指向的数据的类型。
return;
}

输出

13

4

12

12

注意:一定要记得数组名并不是真正意义上的指针,它的内涵要比指针丰富的多。但是当数组名当做参数传递给函数后,其失去原来的含义,变作普通的指针。另外要注意sizeof不是函数,只是操作符。