c - 在 C 中使用函数初始化数组变量

标签 c

我是一个完全的初学者。

我有一个将 int 转换为 array 的函数。

#include <math.h> 
#include <stdio.h>

int *convertIntArray(int number) {
    int n = log10(number) + 1;
    int i;
    int *numberArray = calloc(n, sizeof(int));
    for (i = 0; i < n; ++i, number /= 10) {
        numberArray[i] = number % 10;
    }
    return numberArray;
}

我想通过将整数传递给 convertIntArray 函数来初始化 main 函数中名为 sample 的数组。我的伪代码如下所示:

int main(int argc, char *argv[]) {
    int sample = convertIntArray(150);
    // rest of main function

但显然这是行不通的。正确的做法是什么?

最佳答案

该数组由 converIntArray 函数分配,并返回指向其第一个元素的指针。如果您使用适当的类型定义了 array,则可以将此指向 array 的指针存储在 main 中:

int main(int argc, char *argv[]) {
    int *sample = convertIntArray(150);
    // rest of main function

但请注意,您无法从指针和值判断 array 所指向的数组的大小。您应该返回始终分配最大大小,即 10 int 或以其他方式返回大小,例如作为数组的第一个元素,然后您将使用额外的元素分配该大小。

关于c - 在 C 中使用函数初始化数组变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52486349/

相关文章:

c - 我想了解如何覆盖一组 C 结构?

c - 将 64 位整数相除,就像被除数左移 64 位一样,无需 128 位类型

c - 正交相机投影矩阵

C: 宏没有正确地转换为 int

C、日志、二进制、数字四。他们不混合

C如何从文件中读取一位

c++ - const T * 和 T * const 有什么区别?

c++ - C/C++ 中的运算符优先级和关联性

c - 将字符串保存到数组并在 C 中打印出来

c - 一个跟踪 CPU 时间和内存使用情况的 Linux shell