测试程序如下:
#include<iostream>
using namespace std;
void Try(char a[])
{
cout<<"sizeof(a):"<<sizeof(a)<<endl;
cout<<a<<endl;
}
void main()
{
char str[]="Hello";
char *p=str;
char *s="Hello";
int n=10;
char b[100]={'a','b','c','d','e','f','g','h'};
cout<<"sizeof(str):"<<sizeof(str)<<endl;
cout<<&p<<endl;
cout<<"sizeof(p):"<<sizeof(p)<<endl;
cout<<"sizeof(s):"<<sizeof(s)<<endl;
cout<<"sizeof(n):"<<sizeof(n)<<endl;
Try(b);
cout<<"sizeof(b):"<<sizeof(b)<<endl;
}
结果:
sizeof(str):6
0012F518
sizeof(p):4
sizeof(s):4
sizeof(n):4
sizeof(a):4
abcdefgh
sizeof(b):100
总结:
参数a[100]里的100是个障眼的数字,其实原本可以为a[],函数调用的时候,分配了一个指针a空间,而这个指针空间的大小本身就是4个字节,同sizeof(p),sizeof(s)一样是求指针本身的内存大小,而非指向的内存的大小。
那这里有个问题就是:数组指针str和指针s的区别在哪里呢?
博客展示了一个C语言测试程序,包含对字符数组、指针、整型变量等的sizeof操作,还定义了一个函数Try用于输出字符数组相关信息,通过该程序可对C语言中不同类型变量的内存占用情况进行测试。

被折叠的 条评论
为什么被折叠?



