| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:一个小程序但理解不了
只看楼主 加入收藏
z000ch
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-3-9
收藏
 问题点数:0 回复次数:9 
一个小程序但理解不了
#include<stdio.h>
#include<string.h>
main()
{char a[5]={'1','2','3','4','5'};
printf("%d %d\n",sizeof(a),strlen(a));
}
为什么是5,11
搜索更多相关主题的帖子: include 
2012-12-18 09:00
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
数组最后一位应该有个 '\0'
2012-12-18 09:02
daniel_
Rank: 5Rank: 5
等 级:职业侠客
帖 子:212
专家分:307
注 册:2012-11-13
收藏
得分:0 
#include<stdio.h>
#include<string.h>

int main()
{
    char a[6]={'1','2','3','4','5'};
    printf("%d %d\n",sizeof(a),strlen(a));

    return 0;
}
2012-12-18 09:04
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
以前探讨过   因为c语言对数组越界不进行严格的检查   所以strlen(a)的长度是未知的

DO IT YOURSELF !
2012-12-18 09:15
a462410594
Rank: 2
等 级:论坛游民
帖 子:75
专家分:64
注 册:2011-11-17
收藏
得分:0 
回复 4楼 wp231957
赞同!!!
2012-12-18 11:26
a462410594
Rank: 2
等 级:论坛游民
帖 子:75
专家分:64
注 册:2011-11-17
收藏
得分:0 
大部分编译程序 在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因
char str[20]="0123456789";
int a=strlen(str); //a=10;
int b=sizeof(str); //而b=20;
2012-12-18 11:29
a462410594
Rank: 2
等 级:论坛游民
帖 子:75
专家分:64
注 册:2011-11-17
收藏
得分:0 
char a[10]={'1','2','3','4','5'};
printf("%d %d\n",sizeof(a),strlen(a));
此时结果就是10 5
2012-12-18 11:33
a462410594
Rank: 2
等 级:论坛游民
帖 子:75
专家分:64
注 册:2011-11-17
收藏
得分:0 
char str[20]="0123456789";
int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
int b=sizeof(str); //而b=20; >>>> sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。
2012-12-18 11:33
a462410594
Rank: 2
等 级:论坛游民
帖 子:75
专家分:64
注 册:2011-11-17
收藏
得分:0 
char a[5]={'1','2','3','4','5'};strlen 计算字符串的长度,以结束符 0x00 为字符串结束。
‘1’占两个字节,五个就是10,再加上'\0',就是11了
2012-12-18 11:36
c语言新手yu
Rank: 2
等 级:论坛游民
帖 子:38
专家分:17
注 册:2012-11-5
收藏
得分:0 
哦哦???
2012-12-18 18:18
快速回复:一个小程序但理解不了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014062 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved