"在C"中编程的第10章末尾的练习。 Stephen Kochan说要编写一个按字母顺序对structs
数组进行排序的函数。
结构具有
形式struct entry
{
char word[15];
char definition[50];
};
模仿字典。这些structs
的数组看起来像这样
const struct entry dictionary[10] =
{
{"agar", "a jelly made from seaweed"},
...,
...,
{"aerie", "a high nest"}
}
struct entry
的定义是全球性的,dictionary
是主要的。
我写了一个函数,它应该按字母顺序对这个字典进行排序,称为dictionarySort
void dictionarySort(struct entry dictionary[], int entries)
entries
是dictionary
中元素的数量。在main
中,我声明了该函数并使用
dictionarySort(dictionary, 10);
现在我收到了错误
warning: passing argument 1 of ‘dictionarySort’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
用于函数调用和
note: expected ‘struct entry *’ but argument is of type ‘const struct entry *’
void dictionarySort(struct entry dictionary[], int entries)
用于函数头。
我找到了Passing an array of structs in C并按照接受的答案,但仍然无效。请注意,我还没有学过指针,因为它们尚未在本书中介绍过。
答案 0 :(得分:3)
juste删除数组声明中的const。
对于编译器const意味着在该堆栈上为该变量分配的内存空间是只读的,因此您的函数不应该修改它。