论坛: 编程破解 标题: 请教关于C的变量大小的问题 复制本贴地址    
作者: void [void]    论坛用户   登录
#include<stdio.h>
void main()
{
char a[11]="hello";
char *p;
int c;
int b;
p=a;
b=sizeof(a);
c=sizeof(p);
printf("%d\n",c);
printf(a);
printf("\n");
printf("%d\n",b);
}
结果是这样的!
4          //为什么c是4,请教一下!
hello
11
Press any key to continue

地主 发表时间: 06-05-25 23:53

回复: sniper167 [sniper167]   论坛用户   登录
#include<stdio.h>

void main()
{
    char a[11] = "hello";
    char *p;
    int c;
    int b;

    p = a;
    b = sizeof(a);
    c = sizeof(p);

    printf("%d\n", c);
    printf(a);
    printf("\n");
    printf("%d\n", b);
}

结果是这样的!
4          //为什么c是4,请教一下!
hello
11
Press any key to continue
____________________________________________
这样应该好看多了 

[此贴被 啥都不会(sniper167) 在 05月26日11时52分 编辑过]

B1层 发表时间: 06-05-26 11:48

回复: sniper167 [sniper167]   论坛用户   登录
c的值是根据你的编译器来决定的

比如在wintc下  c就等于2咯

B2层 发表时间: 06-05-26 11:53

回复: void [void]   论坛用户   登录
啥兄说如果wintc,是2,这个我理解是怎么回事!
但是我想知道,为什么在经过p=a;c=sizeof(p);之后c中的值是a的大小呢?还是p的大小?可是这个4就搞不明白是哪个的了!而且如果改成c=sizeof(*p);输出结果却是1,这样的话也就是说是p的大小!可是p已经指向了a了,那为什么不是a的大小呢?就象b一样!希望帮忙解释清楚点,我还莫名着呢!谢谢啦!

B3层 发表时间: 06-05-26 15:31

回复: 286 [unique]   版主   登录
4是一个字符指针的大小。
不是数本身的大写,而是在内容中,分配四个字节的空间。
如果是无符号整型,则可表示范围为:
0~255*255*255*255。
如果是有符号,则表示:
-255*255*255*128+1~255*255*255*127

B4层 发表时间: 06-05-26 17:01

回复: void [void]   论坛用户   登录
喔,这么一说我明白啦,是分配的空间!怪不得char a[11]="hello";会是11而不是6了!谢谢286!也谢谢啥都不会!


[此贴被 极乐往生(void) 在 05月26日17时54分 编辑过]

B5层 发表时间: 06-05-26 17:47

回复: 286 [unique]   版主   登录


B6层 发表时间: 06-05-26 18:45

回复: sniper167 [sniper167]   论坛用户   登录
莫谢我
偶也是来学习学习
听286讲讲课的。。。

PS:286又入定咯  几天没见了

B7层 发表时间: 06-05-26 23:30

回复: best [best]   论坛用户   登录
还是一个概念问题,sizeof()是返回所占空间的大小,你定义的是int型,int型在WIN32环境下占的空间是4个字节!呵,所以返回4,那个11 是char占一个字节,一共有11个char 所以占11个空间,呵呵。明白了吧?

B8层 发表时间: 06-06-15 13:57

回复: void [void]   论坛用户   登录
我一开始不明白的是p的大小,也就是int c中的值为什么是4,后来286说了,我找了相关的书看了下,才发现32位系统中,指针变量所分配的空间是4,不管这个指针是什么类型的,而我是sizeof(p)附给了c,那么c就是p的大小4了,并且知道了sizeof()返回的是分配的空间,不管空间是否利用~呵呵,应该没错吧!还是基础没学好~伤心啊~

B9层 发表时间: 06-06-20 10:43

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号