您的位置:首页 > 其它

对32位系统C指针的一些测试

2005-04-06 18:25 225 查看
测试程序如下:
#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 测试