C 在外部函数中分配字符串数组
我试图通过另一个函数分配一个字符串数组。我基本上可以做到这一点,但当我在另一个函数中尝试它时(添加了另一个指向级别),我被卡住了 代码如下:C 在外部函数中分配字符串数组,c,arrays,string,pointers,malloc,C,Arrays,String,Pointers,Malloc,我试图通过另一个函数分配一个字符串数组。我基本上可以做到这一点,但当我在另一个函数中尝试它时(添加了另一个指向级别),我被卡住了 代码如下: int main() { char** book; FillBook( &book ); ... ... } 现在我尝试为5个3个字母的字符串分配内存,并填充它们,但我被卡住了(程序执行停止): 在*book_pt[0]之后,我尝试分配的每个指针都会产生相同的效果。 它也使用strdup做同样的事情 添加行:
int main() {
char** book;
FillBook( &book );
...
...
}
现在我尝试为5个3个字母的字符串分配内存,并填充它们,但我被卡住了(程序执行停止):
在*book_pt[0]之后,我尝试分配的每个指针都会产生相同的效果。
它也使用strdup做同样的事情
添加行:
(*book_pt == NULL)
第一个malloc显示它不返回空值。使用变量
char***book\u pt
的表达式缺少改变优先级的括号
例如:
*book_pt[1]
应该是:
(*book_pt)[1]
如果没有括号,[]运算符优先于*运算符,但您需要先取消引用book\u pt
您的
*book\u pt[0]
碰巧可以工作,但这只是因为book\u pt[0]
与*book\u pt
相同。但是当索引i
不是0时,*book\u pt[i]
不同于(*book\u pt)[i]
我想你需要(*book\u pt)[1]=
。检查,对于0索引,它是等价的。问题是*book\u pt[1]
谢谢,看起来我在问之前并没有花太多时间尝试,但实际上我做了,谢谢again@MatthewGunn请随意改进答案。因此,我更喜欢1[*book\u pt]
——它巧妙地避免了歧义
(*book_pt)[1]