![]() |
#2
rjsp2022-10-13 20:17
|

#include <stdlib.h>
#include <stdio.h>
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{
printf("%d\n", array);
printf("%d\n", *array);
for (size_t i=0; i<arraySize; i++)
array[i] = getNextValue();
}
// 获取随机值
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
/* getNextRandomValue 不能加括号,否则无法编译,因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针*/
populate_array(myarray, 10, getNextRandomValue);
for(int i = 0; i < 10; i++) {
//printf("%d\n", myarray[i]);
}
printf("\n");
return 0;
}
疑问:
1、void populate_array(int *array, size_t arraySize, int (*getNextValue)(void)) 形参的第一个参数int *array 是指针吗?
2、void populate_array() 方法没有返回值啊, 它是怎么把变量传给 main()主函数的?
3、 printf("%d\n", array); printf("%d\n", *array); 打印的怎么不一样的结果 ; 它们结果是 -1482720080 -132991696 ;第一个结果是内存地址吗? 第二个值怎么是负数?