标题:C语言学习中,求解答教材例题的疑惑,谢谢!
取消只看楼主
william1993
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-4-14
结帖率:0
已结贴  问题点数:10 回复次数:2 
C语言学习中,求解答教材例题的疑惑,谢谢!
代码较长,如下:
#include "stdio.h"
#include "stdlib.h"
#define SIZE 15
#define N 3
void getrand (int *, int);
void getave (int *, int *, int);
void priarr (int *,int);
main()
{  int x[SIZE], w[SIZE/N]={0}; /* w数组中置初值0,准备存放5个和值 */
   getrand (x, SIZE);
   printf("Output %d random numbers:\n", SIZE);
   priarr(x, SIZE);
   getave(x, w, SIZE);
   printf("Output 5 sum number:\n");
   priarr(w, SIZE/N);
}
void getrand(int *a, int n)
{...}
void getave(int *a, int *b, int n)
{  int i, j, sum;
   for( sum=0, i=0, j=0; i<=n; i++)
   {sum+=a[i];
    if((i+1)%3==0)
      { b[j]=sum;
        sum=0;
        j++;
      }
   }
}
void priarr(int *a, int n)
{...}
标红的那行定义代码在说明的时候说是给W数组设置初值,请问为什么要设初值,后面的自定义函数不是会赋值么,如果不设置有没有影响?
搜索更多相关主题的帖子: numbers include C语言学习 
2017-05-26 09:13
william1993
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-4-14
得分:0 
回复 2楼 九转星河
你看我理解的意思对不对,在定义数组后,系统在内存会开辟一连串的存储单元,但是在开辟之前这些存储单元上原先有没有存储数据是不知道的,因为有可能之前运行程序时会在这些存储单元上留下数据,释放后数据并没有被消掉,如果不赋初值就有可能因为这些不明确的数据出问题。是不是这么理解啊?
2017-05-26 16:25
william1993
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-4-14
得分:0 
回复 2楼 九转星河
你看我理解的意思对不对,在定义数组后,系统在内存会开辟一连串的存储单元,但是在开辟之前这些存储单元上原先有没有存储数据是不知道的,因为有可能之前运行程序时会在这些存储单元上留下数据,释放后数据并没有被消掉,如果不赋初值就有可能因为这些不明确的数据出问题。是不是这么理解啊?
2017-05-26 16:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477380-1-1.html




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

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