【发布时间】:2020-07-25 08:12:42
【问题描述】:
我在处理动态数组时遇到了一些麻烦...在下一个代码中,我尝试将n 的每个数字放入一个名为digitList 的数组中。它可以正常工作,因为我可以从 CALL 1(在 createDigitList 函数内)打印数组中的每个值,但我不能从 main 打印。我做错了什么???
int main(int argc, char **argv)
{
int n = 1234;
int *digitList;
createDigitList(n, digitList);
//CALL 2 PRINTF
printf("Call 2: %d \n", digitList[2]);
return 0;
}
//returns number of digits (works OK)
int nDigits(int n) {
int unit;
int digit = 0;
while (n != 0) {
unit = n % 10;
n = (n - unit )/ 10;
digit++;
}
return digit;
}
//Allocates memory for list and puts every digit inside the array list
void createDigitList(int n, int list[]) {
int digit, i;
list = (int*) malloc(nDigits(n)*sizeof(int));
for (i = nDigits(n)-1; i >=0; i--) {
digit = n % 10;
list[i] = digit;
n = (n - digit )/ 10;
}
//CALL 1 PRINTF
printf("Call 1: %d \n", list[2]);
}
输出:
Call 1: 3
Call 2: -2063401279
提前谢谢大家!
【问题讨论】:
-
list在你的函数中是本地的,所以改变它不会影响 main 中的digitList,那仍然是一个未初始化的指针 -
tenigram,
//returns number of digits (works OK) int nDigits(int n)--> 嗯,你希望nDigits(0)返回什么?