c - 如何在 C 中分配连续的二维字符串数组

标签 c arrays string malloc 2d

我对整个 C 编程(来自 Java)很陌生,老实说它真的很令人困惑。好的,对于这个问题,我正在尝试为我的 2D 字符串数组分配连续的数据 block (猜测它类似于 3D 数组??)。我所拥有的只是我相信字符串数组的连续分配? 有人可以帮我解决二维数组吗?

是的,我在运行程序之前知道大小,它的定义是行的 ROWS、列的 COLS 和字符串长度的 NAME。

char **people = malloc(COLS * sizeof(char *));

people[0] = malloc(COLS * NAME);
for(int i = 1; i < COLS; i++)
    people[i] = people[0] + i * NAME;

最佳答案

如果您在运行程序之前实际上知道数组的大小,则不需要使用 malloc 动态分配内存,您可以创建一个 2D 静态数组。在您的情况下,由于它是一个二维字符串数组,因此可以将其声明为 char * array[ROWS][COLS],然后您可以通过以下方式将字符串分配给特定元素:数组[nrow][ncol] =“您的字符串”

关于c - 如何在 C 中分配连续的二维字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40568045/

相关文章:

c - 使用 `strstr` 在字符串中搜索多字节 UTF-8 字符是否安全?

c - 在 C 中初始化和声明字符数组

arrays - 从 dmapped 数组实例中提取 DSI 数组类?

php - 如何从数组中获取准确的值 - php

java - 波动的数组大小

c# - 在C#中,如何检查一个字符串是否包含一个整数?

c - 用户定义的减少每次运行都不会返回预期结果

c - 通知父线程终止

c - snprintf 困惑

java - 替换groovy中的大字符串