一个关于C++数组的小问题

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:05:09
请问
char x[]="12345";
char y[]={'1','2','3','4','5'};
这两句有什么区别?
两个数组的长度哪个大?
用什么语句能显示出它的长度?我试了试 pringf("%d",x[]) 不行啊·,应该怎么做?
谢谢各位

x 数组更大
因为直接将 x 初始化为一个字符串,数组中除了盛放有效字符外 还需要一个空间来盛放字符串结束标志 '\0' ,故 x 数组的实际长度为 6 字节。
而 y 数组就不同了,它只会分配 5 个字节盛放5个字符,没有结束标志的问题。

由于C语言不对数组上下界进行检查,也没有这方面的函数,故只能有程序设计人员自己检查、控制。

/**********************/
建议你把基础打好,谭浩强那本书虽然很多人对之评价不是很好,但是对于初学者来说还是很好的。你问的问题里面都讲到过..

#include <stdio.h>

void main()
{
char x[]="12345";
char y[]={'1','2','3','4','5'};

int a, b;
a = sizeof(x);
b = sizeof(y);

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

长度应该一样,但是占用内存空间 x 要多加一个字符串结束标志,所以占用空间 x 大。strlen( )函数的结果是只算字符串的有效长度。

printf("%d",sizeof(a)/sizeof(char));

一样大,用sizeof()语句