【问题标题】:2D array in file/program scope文件/程序范围内的二维数组
【发布时间】:2012-02-14 16:54:54
【问题描述】:

我需要一个可以通过不同方法访问的数组,我必须在 main() 中分配这个数组,然后让 foo() 等其他函数访问这个数组。

这个问题帮助我分配了数组:defining a 2D array with malloc and modifying it
我正在定义这样的数组: char(*array)[100] = malloc((sizeof *array) * 25200); 我正在 main()
中执行此操作 我可以在这个数组中存储 25200 个字符串并通过array[1]访问它们

现在是否可以通过不同的方法访问这个数组,我该怎么做?

【问题讨论】:

    标签: c arrays pointers multidimensional-array shared-ptr


    【解决方案1】:

    有了这个声明:

    char (*array)[100] = malloc((sizeof *array) * 25200);
    

    你可以有一个函数foo

    void foo(char array[][100])
    {
        array[42][31] = 'A';  // you can access characters elements this way
        strcpy(array[10], "Hello world\n");  // you can copy a string this way
    }
    

    您可以这样拨打foo

    foo(array);
    

    【讨论】:

    • 也许我应该添加我必须在 main() 中对其进行 malloc
    • @Joelmob 有什么改变吗?
    • 这很好用,但是否有可能不需要 foo() 的参数
    • @Joelmob 您可以在文件范围内声明char (*array)[100],在您的main 中声明malloc,并直接在不带参数的foo 函数中使用它;这会起作用,但它的风格很糟糕。
    猜你喜欢
    • 2016-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2013-08-31
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多