关于C语言程序的一个简单题

[复制链接]
查看11 | 回复1 | 2008-8-17 15:57:17 | 显示全部楼层 |阅读模式
谁来帮我详细讲解一下啊,讲的好就追加20分。
有以下程序段
char arr[]="ABCDE";
char *ptr;
for(ptr=arr;ptr<arr+5;ptr++)
printf("%s\n",ptr);
输出结果是(D)
D).
ABCDE
BCDE
CDE
DE
E

回复

使用道具 举报

千问 | 2008-8-17 15:57:17 | 显示全部楼层
字面字符串里头 \开始的是一个转义字符。这里\0代表的是一个空字符。sizeof()当括号里头是数组名的时候 它计算的是整个数组的长度。所以是7。strlen()是计算字符串的长度。c里头字符串是以空字符结尾作为字符串结束的标志所以strlen()在遇到空字符的时候就已经认为字符串结束了。所以这里它只认为字符串的长度为2.是a和0。空字符不计算在内。int main() { char a[7]="a0\0a0\0";int i,j; i=sizeof(a); j=strlen(a); printf("%d %d\n",i,j);printf("%s",a);system("pause"
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行