strlen的疑惑

[复制链接]
 楼主| wdliming 发表于 2012-7-17 17:01 | 显示全部楼层 |阅读模式
本帖最后由 wdliming 于 2012-7-21 12:28 编辑

#include <stdio.h>
#include <string.h>

int main(void)
{
    char a[1000];
    int i;
    for (i=0; i<1000; i++)
    {
        a = -1-i;
    }
    printf("%d\n",strlen(a));
   
    return 0;
}
改了一下代码。。100应该是1000的
这段代码执行后的结果实255

请问为什么 啊?谢谢!
aozima 发表于 2012-7-17 19:13 | 显示全部楼层
楼主去查strlen如何判断字符串结束?
shell.albert 发表于 2012-7-18 16:45 | 显示全部楼层
strlen()函数用于计算非零字符串的长度,从下标0开始,一直统计到终止符 ’\0'
你得到的这个数肯定是在255-1=254,即a[254]这个元素为0.
建议你使用
printf("%d\n",a[254]),将值打印出来看一下。
 楼主| wdliming 发表于 2012-7-18 18:50 | 显示全部楼层
3# shell.albert
哦,谢谢你!哈哈不错
 楼主| wdliming 发表于 2012-7-19 09:12 | 显示全部楼层
3# shell.albert
gdb了一下是,在a[255]=0的
原野之狼 发表于 2012-7-19 09:42 | 显示全部楼层
a = -1-i;
这个怎么解释?
sinonion 发表于 2012-7-20 11:19 | 显示全部楼层
for (i=0; i<1000; i++)
    {
        a = -1-i;
    }


??a是哪来的,楼主你想做什么?
 楼主| wdliming 发表于 2012-7-21 12:29 | 显示全部楼层
本帖最后由 wdliming 于 2012-7-21 12:30 编辑

7# sinonion
哦,是a【i】 = -1-i;哈哈疏忽啊,网页里数组a不能很好的显示。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:我的未来不是梦

76

主题

914

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部