c++ - 二维数组,在 C 中使用 calloc

标签 c++ c arrays multidimensional-array calloc

我正在尝试创建一个二维字符数组来存储字符行。例如:

lines[0]="Hello";
lines[1]="Your Back";
lines[2]="Bye";

由于行必须是动态的,因为我一开始不知道我需要多少行。这是我的代码:

int i;
char **lines= (char**) calloc(size, sizeof(char*));

for ( i = 0; i < size; i++ ){
lines[i] = (char*) calloc(200, sizeof(char));
}

for ( i = 0; i < size; i++ ){
free(lines[i]);
}

free(lines);

我知道每行不能超过 200 个字符。我不断收到诸如“错误 C2059:语法错误:'for'”之类的错误。对我做错了什么有什么想法吗?

最佳答案

No the code is not in a function.

在 C 和 C++ 中,您不能只是将任意语句放在函数之外。不过,您可以做的是使用一个函数来初始化变量:

char** init_lines() {
    char** ln = /* ... */;
    // your allocations etc. here
    return ln;
}

char** lines = init_lines();

关于c++ - 二维数组,在 C 中使用 calloc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2664624/

相关文章:

c++ - 在 C++ 中合并十六进制字符串的最佳方法? [大量编辑]

c - 可变参数函数和任意参数保存以供将来执行

c++ - 为什么 'this' 关键字不是 C++ 中的引用类型

c++ - 将未知长度数组从 c 返回到结构体中的 Swift

c++ - 何时删除复制构造函数和赋值运算符?

c - 触发页面错误的简单方法是什么?

c++ - Pascal 和 Delphi 数组到 C/C++ 数组

C 数组和指针

php - 数组中的最后一条记录返回 null

C 程序查找两个单词是否是字谜(我的代码在里面)