| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1922 人关注过本帖
标题:静态数组和外部数组可以初始化问题
只看楼主 加入收藏
linx218
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-10
收藏
 问题点数:0 回复次数:4 
静态数组和外部数组可以初始化问题

书本上讲只有静态数组和外部数组可以初始化,但本人用下面程序调试时,却发现自动数组也可以初始化,不知道什么原因,望各位能给与指点.
int main(void)
{
int i,ch[5]={1,2,3,4,5};
add(ch);
for(i=0;i<5;i++) printf("%3d ",ch[i]);
printf("\n");
add(ch);
for(i=0;i<5;i++) printf("%3d ",ch[i]);
printf("\n");
getch();
return 0;
}

int add(int *s)
{
int i;
static int a[5]={1,2,3,4,5};
for(i=0;i<5;i++)
{
s[i]+=a[i]; a[i]++;
}
return 0;
}

当add函数中a数组定义为static(静态)时,执行结果为:
2 4 6 8 10
4 7 10 13 16
即在第二次调用add时,a数组的值保持了上一次调用后的值.但当不使用static时,同样可以初始化,但结果却为:
2 4 6 8 10
3 6 9 12 15
这不说明自动数组也可以初始化吗?

搜索更多相关主题的帖子: 静态 int void main 书本 
2006-12-26 08:59
HGC2006
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-7-31
收藏
得分:0 

这个问题怎么没有人回啊?版主帮帮忙,给个答案先


如果世界都是好人,那要警察干嘛?
2006-12-26 10:01
linx218
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-10
收藏
得分:0 
大家可以讨论一下啊,是不是书本上说法有误呢?老谭的书上也是这么说的啊
2006-12-26 10:57
蓝色神话
Rank: 2
等 级:论坛游民
威 望:1
帖 子:404
专家分:24
注 册:2006-5-11
收藏
得分:0 
注意一点:当数组a不是static时,第一次调用add函数后,ch[5]={2,4,6,8,10}.当第二次调用add函数时,是在新得到的ch数组上进行操作!所以最后得到的结果是ch[5]={3,6,9,12,15}
2006-12-26 11:29
linx218
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2006-12-10
收藏
得分:0 
是的,也就是说下一次调用时,a是重新初始化的,如ch[0]=2+a[0],a[0]为1.
2006-12-26 11:59
快速回复:静态数组和外部数组可以初始化问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014620 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved