C语言初始化数组时,一定要使用静态存储吗?

在网上看到这个:初始化数组时,未使用静态存储inta[3]={0,1,2};这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(extern)数... 在网上看到这个:
初始化数组时,未使用静态存储
int a[3]={0,1,2};
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(extern)数组才能初始化。应改为:
static int a[3]={0,1,2};

真的是这样吗?谭浩强那本书上说,可以在定义数组时初始化,如:
int a[3] = {0,1,2};

为什么我在网上搜到的会是上面的说法呢?那种是对的?
C语言是不是不能这样给数组赋值:
main()
{
int a[3];
a[3] = {0,1,2};
}

哪位大虾帮我解释一下好吗?
main()
{
int a[3];
a[3] = {0,1,2};
}

这样是不行的吧?
那么:
main()
{
static int a[3];
a[3] = {0,1,2};
}
这样行不行呢?
展开
 我来答
iq...t@163.com
2007-01-10 · TA获得超过126个赞
知道答主
回答量:198
采纳率:0%
帮助的人:158万
展开全部
static和extern和定义数据无关,只和变量的使用范围有关,static静态全局变量的使用范围是当前文件,extern是文件间的访问。

static int a[] = {1,2,3};
int b[] = {1,2,3};
void main()
{
int i = a[0]; // 这时候i = 1
int k = b[0]; // 这个时候 k != 1
}

建议不要看谭浩强的书,这里有本书,Bjarne Stroustrup - The C++ Programming Language

看就看大师写的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式