首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

数组有关问题,小弟我晕.

2012-03-20 
数组问题,我晕...charaa[10] 0123456789 与for(i0i 10i++)aa[i]i这两种初始化数组有什么不同?感

数组问题,我晕...
char   aa[10]= "0123456789 ";

for(i=0;i <10;i++)
    aa[i]=i;

这两种初始化数组有什么不同?

感觉第一种会自动加 '\0 ',而第二种不会.为什么?

这样说来第一种方法也不对吧,应该char   aa[10]= "012345678 ";

而第二种方法是不是要加上aa[i]= '\0 ';呢?

tks


[解决办法]
第一种方法编译器已经实现帮你最后自动加上一个 '\0 ',此方法数组的大小应该是strlen( "0123456789 ") + 1,即11,而不是10.

第二种方法最后要自己加上 '\0 ',这种方法也要保证aa[9]为 '\0 '.


[解决办法]
第2总算是直接输入了吧 字符串的输入 第1个是不是一错误 里边只能放9个最后一个是 \0不然溢出了吧
[解决办法]
Inhibitory()


第一种方法编译器已经实现帮你最后自动加上一个 '\0 ',此方法数组的大小应该是strlen( "0123456789 ") + 1,即11,而不是10.

第二种方法最后要自己加上 '\0 ',这种方法也要保证aa[9]为 '\0 '.
------------------------------

支持




[解决办法]
char aa[10]= "0123456789 "; 这样写是错误的,编译器会提示溢出。

#include "stdafx.h "
#include <iostream.h>
#include <string.h>

int main(int argc, char* argv[])
{
char aa[11]= "0123456789 ";
cout < <strlen(aa) < <endl;
cout < <sizeof(aa) < <endl;
cout < <strlen( "0123456789 ") < <endl;
cout < <sizeof( "0123456789 ") < <endl;
return 0;
}
输出是:
10
11
10
11

[解决办法]
第一种方法编译器已经实现帮你最后自动加上一个 '\0 ',此方法数组的大小应该是strlen( "0123456789 ") + 1,即11,而不是10.

第二种方法最后要自己加上 '\0 ',这种方法也要保证aa[9]为 '\0 '.
[解决办法]
第一个实际上是字符串类型了,所以加上了结束符
[解决办法]
楼主是不是混淆一个东西,认为两种方式得出的数组的内容一样?
[解决办法]
除了楼上各位所说的,LZ还忽视了一个问题,char aa[10]= "0123456789 ";初始化aa时赋的是ASCII形式的数字,而
for(i=0;i <10;i++)
aa[i]=i;
则赋了原本运算所用的数字
[解决办法]
字符串和数组关系的基本问题。
简单说,就是末尾是否有 '\0 '的问题。
建议楼主多看看教科书上关于数组和字符串的内容。
数组只是字符串的载体,并不意味着,数组装的就是字符串,也不意味字符串一定要用数组装。
[解决办法]
mark

热点排行