【发布时间】:2021-04-05 04:30:20
【问题描述】:
这是结构
typedef struct struct1
{
char words[kInputSize];
struct WordNode* next;
}struct1;
我在为 block->words 分配内存块时遇到错误。
struct1* add(struct1** newHead)
{
struct1* block= NULL;
// allocate a block of memory for new record
block->words = malloc(strlen(words) + 1); //I am trying to add this line but I am not able to do it.
}
最后一行出现 Visual Studio 代码的 E0137 和 C3863 错误
【问题讨论】:
-
您似乎正在编写 C 代码。如果是这样,请使用适当的语言标签。 C++ 是不同的语言,标签不能互换使用。
-
这能回答你的问题吗? Cannot modify char array
-
block->words是一个数组。您正在分配它,就好像它是一个指针。数组不是指针,指针也不是数组。具体来说,数组是元素的集合。指针是一个包含其他地址的变量。 在某些情况下可以互换使用指针和数组这一事实并不意味着它们是同一回事。一个区别——由于它们是不同的东西——是可以分配指针(const限定符和类型系统允许)而数组不能。
标签: c++