有人可以解释如何正确地为c指向字符指针数组的指针分配内存吗?例如:
char *(*t)[];
我尝试这样做:
*t = malloc( 5 * sizeof(char*));
这给了我一个编译错误:
error: invalid use of array with unspecified bounds
对此的任何帮助都会很棒!感谢
答案 0 :(得分:4)
你能做的是:
char **t = (char**)malloc( <no of elements> * sizeof(char*));
分配指针数组。
for (i = 0 ; i< <no of elements> ; i++)
{
t[i] = (char*)malloc( <length of text> * sizeof(char));
}
为数组的每个元素指向的文本分配内存。
答案 1 :(得分:2)
当人们说“指向X数组的指针”时,通常它们实际上是指向 X数组的第一个元素的指针。指针到数组的类型非常笨重在C中,通常只出现在多维数组中。
话虽如此,您想要的类型只是char **
:
char **t = malloc(num_elems * sizeof *t);
使用指针到数组的类型,它看起来像:
char *(*t)[num_elems] = malloc(sizeof *t);
请注意,除非num_elems
是整数常量表达式,否则这将是C99可变长度数组类型。
答案 2 :(得分:0)
这取决于你希望如何分配它,但这是一种方式。
char** myPointer = malloc(sizeof(char *) * number_Of_char_pointers)
int i;
for(i = 0; i < number_Of_char_pointers; i++)
{
myPointer[i] = malloc(sizeof(char) * number_of_chars);
}
需要注意的是,当用于取消引用变量时,myPointer [i]与说*(myPointer + i)几乎完全相同,而不是在初始化期间。
答案 3 :(得分:-2)
试试这个:
int main()
{
char** a = new char* [100];
delete []a;
return 0;
}