该函数pba
应将低于所有其他指针平均值pointers
的指针分配给变量。arr
arr
这是家庭作业 - 虽然我在实施这个方面没有问题,但我确实觉得这些东西对我来说并不完全显而易见 我的问题是
- 如何在函数内部(而不是外部)分配内存?
- 我的分配好吗?我注意到,如果我把这
malloc
条线改成类似的东西,pointers = (int **)malloc(sizeof(int*)*2);
它仍然可以工作,但pointers = (int **)malloc(sizeof(int*));
不会工作,所以我想我首先在理解尺寸应该是多少时遇到了一些问题
我调试了它,似乎一旦我离开函数就无法访问内存,这对我来说没有意义,因为它在堆内存中。
void main() {
int arrSize = 6;
int arr[6] = {8,4,2,9,5,4};
int **pointers;
int resSize, i;
pointers = (int **)malloc(sizeof(int*)*arrSize);
pba(arr, 6, pointers, &resSize);
for (i = 0 ; i < resSize ; i++) {
printf("%d,",*(*pointers + i));
}
printf("\n\n");
}
void pba(int* arr, unsigned int size, int ** pointers, int * resSize) {
int i,j = 0,sum = 0;
double avg;
*resSize = 0;
for (i = 0 ; i < size ; i++)
sum += arr[i];
avg = sum/(double)size;
for (i = 0 ; i < size ; i++) {
if (arr[i] < avg)
pointers[(*resSize)++] = &arr[i];
}
}