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

王朝other·作者佚名  2006-01-31
窄屏简体版  字體: |||超大  

测试程序如下:

#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的区别在哪里呢?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航