标题:C语言学习中,求解答教材例题的疑惑,谢谢!
只看楼主
william1993
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2017-4-14
结帖率:0
已结贴  问题点数:10 回复次数:5 
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
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:5 
回复 楼主 william1993
感觉这个没啥好说的~不赋初值其实就是系统原来数据的储存值~这个值是不确定的~感觉C不自动赋初值也许是节省赋值的运算时间吧~不过为了安全起见还是养成赋予初值的习惯好~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-26 11:31
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
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
得分:5 
回复 3楼 william1993
你的理解是对的,不赋初值的变量,可能是任何一个值,反正就是垃圾值就对了。

但是并非所有变量都需要在定义的时候就给以一个初值,这个举例不好说,你多敲点儿代码,自己就知道那些变量应该且必须给以一个初始值,那些是没有必要的纯粹给编译器找事儿做。

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-05-26 16:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 5楼 renkejun1942
静态变量就没必要了~
加static记得初值就0~
不过其它的还可以看看在具体而言~

突然发现全局变量也是赋予初值0的~~

[此贴子已经被作者于2017-5-26 20:09编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-05-26 18:06



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




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

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