我有一个名为 fun(int num, int * array);
的函数这需要 int
和int array
作为其论据。我正在尝试转换int
到数组。
当我运行程序时,我没有正确显示数组
int fun(int num, int*array) {
int count =0;
while(num>0) {
num/= 10;
count++;
}
array[count];
// for loop works
}
当我在程序中打印数组时,即每次运行程序时,我都会得到随机数字。
最佳答案
这条线应该做什么?
array[count];
由于您的整数数组将在您的 fun 函数中发生变化,因此您必须分配内存(通过使用 malloc、realloc...)。
编辑:另外,当您计算“num”中有多少位数字时,您已经更改了“num”所保留的值。 复制“num”!
编辑2:我越看你的函数,就越觉得你在使用它时会遇到问题。
首先,您想将整数分解为 int 数组。 好的,但是整数有范围,因此意味着整数有最大位数。 根据我的内存,64位整数有20位。 所以你可以简单地使用“int array[NB_DIGIT_INT_MAX];”与“#define NB_DIGIT_INT_MAX 21”。 因此,分配是不必要的,并且会增加代码的复杂性(调用者必须在函数调用后释放)。
其次,你的 fun 函数没有说明有多少个 case 将保存你的整数。 假设 num = 12,您的数组将具有“array[0] = 1,array[1] = 2”,但是您如何知道在哪里停止? 如果 num = 2345,您如何知道数组中只有第 4 个案例是合法的? 有两种方法:您有另一个变量来保存数组的实际大小,或者您的数组中有一个特殊值表示“结束”(例如用作字符串的 char 数组的“\0”)。
您可以使用“-1”。
让我们尝试一下,如果有不清楚的地方,请随时提问(英语不是我的母语)
关于c - 数字到整数的顺序相同 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48426126/