小弟初学C++,有一问题,关于数组,望大侠们刺教!!!!!!

sken 2005-03-16 10:50:01
在数组初始化时,是不是必需要初始化
比如:
int array[5]={};
是否可以,如果不可以,哪又是为什么呢?
...全文
202 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhx1123 2005-03-16
  • 打赏
  • 举报
回复
可以不用初始化,但一般来讲,
还是初始化比较好,
免得出现意想不到的结果
usufu 2005-03-16
  • 打赏
  • 举报
回复
可以这样int array[5]={0};给数组赋全0,否则数组的内容是不确定的.
Salam2001 2005-03-16
  • 打赏
  • 举报
回复
为什么要这样写?画蛇添足?
其实,初始化不初始化要看你的需要了,编译器不会强制你初始化数组。
大羽飞鹤 2005-03-16
  • 打赏
  • 举报
回复
关注
windonly00 2005-03-16
  • 打赏
  • 举报
回复
int array[5];
初始化可有可无,无的话显示的是乱码
zhousqy 2005-03-16
  • 打赏
  • 举报
回复
不可以這嚜寫好像。偶嚜使過。
laZZe 2005-03-16
  • 打赏
  • 举报
回复
不过声明数组时不用强制初始化的。
laZZe 2005-03-16
  • 打赏
  • 举报
回复
不可以的,数组的初始化就是在声明数组时给部分或全部元素赋初值。
special001 2005-03-16
  • 打赏
  • 举报
回复
不必非得初始化,不初始化的情况很多,可能是在后面通过键盘等设备向其中读入数据,或者是做为一个缓冲区来充当某函数的参数。
junguo 2005-03-16
  • 打赏
  • 举报
回复
可以的!初始化不是强制的!
sken 2005-03-16
  • 打赏
  • 举报
回复
谢谢各位牛人的帮忙,小弟已经明白.
iori_yagami 2005-03-16
  • 打赏
  • 举报
回复
int array[5];//正确,array中的值不确定
int array[5] = {};//错误,不能通过编译
int array[5] = {0};//正确,array中的值全部初始化为0
pcboyxhy 2005-03-16
  • 打赏
  • 举报
回复
to skywgs(Janson)

看ISO C++ 98标准第148页。


或者C++ primer 3rd 中文版94页

数组可以被显式地用一组数来初始化这组数用逗号分开放在大括号中例如
const int array_size = 3;
int ia[ array_size ] = { 0, 1, 2 };
被显式初始化的数组不需要指定维数值编译器会根据列出来的元素的个数来确定数组
的维数
// 维数为3 的数组
int ia[] = { 0, 1, 2 };
如果指定了维数那么初始化列表提供的元素的个数不能超过这个值否则将导致编
译错误如果指定的维数大于给出的元素的个数那么没有被显式初始化的元素将被置为0
// ia ==> { 0, 1, 2, 0, 0 }
const int array_size = 5;
int ia[ array_size ] = { 0, 1, 2 };



看完再说可不可以用。
不要被垃圾书误导。
NYN 2005-03-16
  • 打赏
  • 举报
回复
刺激你一下:自己写一下运行看看不就好了?
#include <stdio.h>

void main()
{
int a[5]={};
}

会出错:
C:\Documents and Settings\R517.ZZC\桌面\temp\Cpp1.cpp(5) : error C2059: syntax error : '}'
C:\Documents and Settings\R517.ZZC\桌面\temp\Cpp1.cpp(7) : error C2143: syntax error : missing ';' before '}'
C:\Documents and Settings\R517.ZZC\桌面\temp\Cpp1.cpp(7) : error C2143: syntax error : missing ';' before '}'
C:\Documents and Settings\R517.ZZC\桌面\temp\Cpp1.cpp(7) : error C2143: syntax error : missing ';' before '}'
执行 cl.exe 时出错.

Cpp1.exe - 1 error(s), 0 warning(s)


skywgs 2005-03-16
  • 打赏
  • 举报
回复
可以这样int array[5]={0};给数组赋全0,否则数组的内容是不确定的."
这个是不正确的,这样赋值并不是给数组赋全0,而是只把数组a[0]赋值0/.

同意,定义时初始化是从前到后的,如果给定的值比数组个数少,则后面的元素并没有赋值。
oyljerry 2005-03-16
  • 打赏
  • 举报
回复
int array[5];
可以只申明一下,等以后再赋值
不过好的写法,是申明时就初始化
int array[5]={0};
140355 2005-03-16
  • 打赏
  • 举报
回复
如果你写了大括号,他就会将你列出的值赋予靠千的元素,靠后的置0;
如果你没写,则所有元素均有不确定的值
sken 2005-03-16
  • 打赏
  • 举报
回复
不明白,能不能仔细说说.
qw2002qw 2005-03-16
  • 打赏
  • 举报
回复
int array[5]={}; 不可以
int array[5]; 可以

sken 2005-03-16
  • 打赏
  • 举报
回复
不过我看书的时候说这个一个错误.
int array[5]={};


" 回复人: usufu(CharmSky) ( ) 信誉:100
可以这样int array[5]={0};给数组赋全0,否则数组的内容是不确定的."
这个是不正确的,这样赋值并不是给数组赋全0,而是只把数组a[0]赋值0/.





64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧