我编写了以下代码:
#include<stdio.h>
#include<stdlib.h>
#define FOR(i,a,b) for(i=a;i<b;i++)
void DeclareAndInitArray();
void PrintArray();
int main(){
DeclareAndInitArray();
//printf("hello\n");
PrintArray();
return 0;
}
void DeclareAndInitArray(){
int array[100];
int i;
FOR(i,0,100){
array[i]=i;
}
}
void PrintArray(){
int array[100];
int i;
FOR(i,0,100){
printf("%d\t",array[i]);
}
}
我期望输出从0开始,然后到99,但是我得到的是:
有人可以告诉我这两个值在开始时是什么,为什么会出现?
最佳答案
DeclareAndInitArray()
和PrintArray()
各自使用各自独立的数组。您要在每个函数中分别声明它:
int array[100];
因此,您在
PrintArray()
中使用的数组尚未初始化,并且包含垃圾。您需要声明一次数组,然后将其作为参数传递到
PrintArray()
中。尝试以下方法:int main(){
int array[100];
DeclareAndInitArray(array);
//printf("hello\n");
PrintArray(array);
return 0;
}
void InitArray(int array[]){
int i;
FOR(i,0,100){
array[i]=i;
}
}
void PrintArray(int array[]){
int i;
FOR(i,0,100){
printf("%d\t",array[i]);
}
}