我的问题是,我的整数数组的值更改时,它传递给函数计算。这些值对于索引0和2-> 5是正确的。C程序:整数数组指针更改值时,作为参数传递
由于某些原因,索引1和6+不是正确的值。
以下是我的代码。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int* generate_rand (int length, int MAX_ARRAY);
void calculate (int *array_ptr, int length, int *mean, int *sd);
main() {
srand(time(NULL));
int a;
printf("\nArray length?: ");
scanf("%d", &a);
int* array_ptr2;
array_ptr2 = generate_rand(a, 100);
//int mean, sd;
int* *mean;
int* *sd;
int i = 0;
for (i = 0; i < 10; i++) {
printf("Array2: %d\n", *(array_ptr2 + i));
}
calculate(array_ptr2, a, *mean, *sd);
//printf("Mean: %d\n", (int)*mean);
}
int* generate_rand (int length, int MAX_ARRAY) {
int arr[length];
int i;
for (i = 0; i < 10; i++) {
int r = rand()%MAX_ARRAY;
arr[i] = r;
printf("Rand: %d\n", arr[i]);
}
int *arrPtr;
arrPtr = &arr[0];
return arrPtr;
}
void calculate (int *array_ptr, int length, int *mean, int *sd) {
int sum;
int i;
for (i = 0; i < length; i++) {
printf("Array: %d\n", *(array_ptr + i));
sum += *(array_ptr + i);
//array_ptr++;
printf("Sum: %d, i:%d\n", sum, i);
}
//*mean = sum/length;
}
你知道我在做什么错吗?
generate_rand正在返回一个指向局部变量的内容的指针,这是没用的。 –
所以你说我应该在include语句的下面声明array_ptr2?我刚刚尝试过,我仍然得到相同的结果。 – twbbas
你必须分配你自己的数组(使用'malloc'或'calloc'或其他东西),'generate_rand'中的那个数组在'函数结束时消失'。看起来你已经绕过了关于通过首先将它放入一个临时指针来返回一个局部变量的警告。 – dreamlax