关于sizeof的问题

来源:百度知道 编辑:UC知道 时间:2024/05/05 17:07:13
char *bname[ ]={"Programming in ANSI C","BASIC","Visual C++ 6.0 Programming ","TRUBO C 2.0"};
int i,m;
void sort(char *name[],int);
m=sizeof(bname)/sizeof(char *); /*字符串个数*/
我把程序改造成如下结果试过
char *bname[ ]={"Programming in ANSI C","BASIC","Visual C++ 6.0 Programming ","TRUBO C 2.0"};
int i,m,x,y,z;
void sort(char *name[],int);
m=sizeof(bname)/sizeof(char *); /*字符串个数*/
x=sizeof(bname);
y=sizeof(char);
z=sizeof(char *);
sort(bname,m); /* 排序,改变指针的连接关系*/
printf("\n%d\n%d\n%d\n%d\n",m,x,y,z);
结果返回值是
4
8
1
2
请高手分别解释一下,m,x,y,z,有何分别?
谢谢先!

x:bname是一个有四个元素的char型指针数组,4*2所以是8
y:一个char变量占1个字节
z:一个char型指针,因为存的是地址,占2个字节(有的是四个字节)

我相信你用的电脑比较老型吧,或者其它系统环境的原因。一般在现在的机器上运行的结果是4(字符个数) 16(四个指针所占空间) 1(char所占空间) 4(一个指针所占空间)指针是指向地址的,地址是用无符号int型表示。