我想创建一个字符串数组,所以我首先使用:
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将导出一个值.但是您只能将值保存到内存地址中.为此,您收到该错误消息.