+ -
当前位置:首页 → 问答吧 → char数组初始化第一个元素,那么剩下的就是0;否则就是乱码。为什么?

char数组初始化第一个元素,那么剩下的就是0;否则就是乱码。为什么?

时间:2010-08-31

来源:互联网

#include<stdio.h>
int main(void){
  char buf[128];//这里没有初始化
  for(int i=0;i<128;++i){
   printf("%c",buf[i]);
  }
  return 0;
}
打印出一堆乱码

但是如果我把第2行改成char buf[128]={'0'};
那么就打印出一个0。似乎这种情况下buf剩下的元素会被初始化为0(也就是字符串结束符)。为什么最原始的代码,buf的内容没有被初始化呢?

我在Sun的CC和Visual C++ 2008都尝试过了,都是一样的结果。
这个是C/C++标准规定的吗,数组什么时候初始化什么时候不初始化?

谢谢!!!!!

作者: kgisme170   发布时间: 2010-08-31

栈上的数组永远不会初始化

作者: caboy_cu   发布时间: 2010-08-31



QUOTE:
栈上的数组永远不会初始化
caboy_cu 发表于 2010-08-31 18:03




   

char c = 'a';不是初始化吗?不初始化怎么计算?

作者: alleva   发布时间: 2010-08-31

相关阅读 更多

热门下载

更多