它要求我创建一个哈希函数,通过对其字符求和将邮政编码转换为整数。这是我的代码。我还没有哈希函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct PostalCode
{
int size;
char *array[6];
} PostalCode;
int main()
{
int size = 6, i;
PostalCode *h = malloc(sizeof(PostalCode));
h->size = size;
h->array = malloc(sizeof(char)*size);
printf("Please enter your postal code: \n");
for (i=0; i<6; i++)
scanf(" %c", &(h->array[i]));
}
我现在得到的错误是:postalcode.c:9:11:错误:使用数组类型赋值给表达式 h-&gt; array = malloc(sizeof(char)* size);
答案 0 :(得分:1)
该行
char *array[6]
声明一个由6个指向char的数组,这不是你想要的。你可以做到这一点
char * array
并以这种方式解决错误,或遵循chux的建议,即
char array[6]
在这种情况下,您不需要导致错误的行,只需将其删除即可。无需动态分配数组。
其他一些建议:
如果您的邮政编码总是6个字符,那么您并非如此 需要PostalCode结构,除非你计划保留其他一些 有关邮政编码的信息。你可以做到
typedef char PostalCode[6];
当然,如果您希望邮政编码有 变长,然后大小可能会有所帮助。
无论你是想要一个struct还是typedef一个char数组,硬编码值6都是个坏主意。如果它总是6个字符,那么你可以#define
它;或者如果你保持结构中的大小,那么请确保你初始化它并使用结构成员而不是文字数字6.
此处无需动态分配内存,但如果您确实要释放它。
祝你好运!