【发布时间】:2015-01-20 05:05:33
【问题描述】:
这是我的简单程序,生成一个包含 N 个整数的数组,打印出来,它会调用 getevennumber 函数,该函数将返回数组中偶数的指针地址。主程序将打印数组中的偶数:
#include <stdio.h>
int* getEvenNumber(int a[]);
int main (){
int N;
printf("Enter N: ");
scanf("%d", &N);
int array[N], i;
int *test[N];
srand(time(NULL));
for(i = 0; i < N; i++)
{
array[i] = (rand() % 100)+1;
printf("%d \n", array[i]);
}
printf("------- \n");
*test = getEvenNumber(array);
for(i = 0; i <= sizeof(test); i++){
printf("%d \n", *test[i] );
}
return 0;
}
int* getEvenNumber(int a[]){
int i,j = 0;
int* ptr[j];
for(i = 0; i <= sizeof(a); i++)
{
if (a[i] % 2 == 0)
{
ptr[j] = &a[i];
printf("%d\n",*ptr[j]);
j++;
}
}
return *ptr;
}
目前的问题是:当我运行程序时,它会打印想要的偶数,然后程序也会打印2个随机数据地址然后粉碎,这是一个示例输出:
人数:10
66
19
70
54
84
12
35
56
53
19
66
70
54
84
19
1981890690
-1090571325
(程序崩溃)
谁能帮我找出问题,谢谢!
【问题讨论】:
-
检查你的代码:int i,j = 0; int* ptr[j];
-
您还试图在函数内填充数组,因此您需要传递一个指向数组的指针,例如 int ** arrayPtr。
-
除非我误读了您的代码,否则您将返回一个指向局部变量的指针,这意味着当您在调用代码中使用它时,一切都会崩溃。