【发布时间】:2017-09-01 13:50:58
【问题描述】:
我想在 c 中以指针的形式有一个固定长度的字符串数组,这样我就可以为它动态分配内存。 我可以看到大量对指向字符串的指针数组的引用,但不是我想要实现的。
我想要的是能够声明一个指向 char[MAX_STRING_LENGTH] 的指针,这样我就可以为所有字符串动态分配一个连续的内存块:
char *(names[MAX_STRING_LENGTH]); // This won't work
names = (some cast)malloc(NUM_STRINGS * MAX_STRING_LENGTH);
然后访问字符串数组:
strcpy(name, names[stringIndex]);
如何声明变量并从 malloc 中转换指针?
【问题讨论】:
-
所以如果我跟着你,你想要一个大的 char 数组,这样你就可以在其中进行自己的分配?
-
我想做一个二维数组的单次分配,其中第二维是固定的
-
字符串的“长度”通常不包括空字符。考虑
strlen()。代码可能需要MAX_STRING_LENGTH-->MAX_STRING_LENGTH + 1才能正确使用names。