学习指针,不明白的地方???求大神解惑
程序代码:
#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 ;第一个结果是内存地址吗? 第二个值怎么是负数?