指针不能在C中分配?

S W*_*ang 1 c pointers

我想创建一个字符串数组,所以我首先使用:

char** p = malloc(sizeof(char*) * count);  // count is the number of strings
Run Code Online (Sandbox Code Playgroud)

但是当我想要初始化这些字符串时,麻烦来了:

for (int i = 0; i < count; i++)
{
    char* s = malloc(size_of_each_string);
    *p + i = s;  // THIS STEP INDUCES ERROR

    while (*s++ = *input++);  // initialize by copy
}
Run Code Online (Sandbox Code Playgroud)

所以我真的很困惑.*p + i似乎是指针算术,它转移到另一个指针.一般允许指针赋值(指向同一个对象).那么为什么不允许这样的任务呢?我怎么能绕过这个来完成这个任务呢?

错误消息是:表达式不可分配.

小智 9

*(p+i)=s而不是*p+i=s.

你要做的事情是保持(p+i)地址.为此你需要使用*(p+i)而不是*p+i.

关于错误消息:

这里算术表达式*p + i将导出一个值.但是您只能将值保存到内存地址中.为此,您收到该错误消息.