标题:sizeof和string
只看楼主
持剑的战士
Rank: 1
等 级:新手上路
帖 子:30
专家分:3
注 册:2019-12-6
结帖率:62.5%
 问题点数:0 回复次数:3 
sizeof和string
#include <stdio.h>
#include <string.h>
int main()
{
    char x[]="STRING";
    x[0]='0';
    x[1]='\0';
    x[2]=0;
    printf("%d %d\n",sizeof(x),strlen(x));  结果是7和1
    return 0;
}
有没有大佬能帮我分析一下这个程序呢?下面的x[0]和x[1],x[2]分别是什么意思呢?
搜索更多相关主题的帖子: 结果 include string sizeof 分析 
2020-01-07 19:41
吕孟伟
Rank: 8Rank: 8
等 级:贵宾
威 望:27
帖 子:200
专家分:870
注 册:2018-10-4
得分:0 
sizeof()返回字符串的大小,包含'\0';strlen()返回字符串的长度,不包含'\0'。
char x[]="STRING";初始化字符串占7个字节,长度为6;
x[0]='0':将字符串首元素设置为0;
x[1]='\0';将第二个元素设置为'\0',结束字符串,此时字符串中只有一个元素0,长度为1。
x[2]=0;已没意义。


[此贴子已经被作者于2020-1-7 21:50编辑过]


借用一下侯捷的话:勿在浮沙筑高台。
2020-01-07 21:44
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
难道要我挨个提醒要看教材?
这样我怕是会有进化的趋势。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2020-01-07 22:10
bcbbcclbbc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:11
帖 子:194
专家分:528
注 册:2019-8-15
得分:0 
问题有些笼统,只能大概给出部分解释。
字符数组与字符串
字符数组,数组元素x[0],x[1],x[2]。。。指的就是对应下标元素的值,没有什么特殊,可以用scanf函数以%d或者%c输出。

只是字符与字符串之间有区别。
而字符串是指定以字符‘\0’结尾的,处理字符串时,遇到‘\0’则说明字符串结束了。所以字符串函数strlen(x)遇到字符‘\0’结束。
sizeof(x)是计算数组x这个数据类型的内存大小。字符数组初始化,但未给出数组大小,sizeof可以算出计算机给数组x多少内存。
char x[]="STRING";

数组x初始化为一个字符串则是给数组x分配了‘S’‘T’‘R’‘I’‘N’‘G’‘\0’这7个字符的内存。
2020-01-09 23:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-498851-1-1.html




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

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