c - 使用结构的邮政编码

标签 c arrays pointers struct

我正在尝试创建一个存储邮政编码的结构,但收到此错误:“c:15:11:错误:分配给具有数组类型的表达式 h->array = malloc(sizeof(邮政编码)*size);"

#include <stdio.h>
#include <stdlib.h>

typedef struct PostalCode
{
    int size;
    char *array[5];
} PostalCode;

void main()
{
    int size = 5;
    PostalCode *h = malloc(sizeof(PostalCode));
    h->size = size;
    h->array = malloc(sizeof(PostalCode)*size);
}

最佳答案

该结构已包含 5 个指针的数组作为其数据成员

typedef struct PostalCode
{
    int size;
    char *array[5];
    ^^^^^^^^^^^^^^
} 

所以你不需要分配它。

如果您想使用此数组来存储例如 5 个 PostalCode 类型的对象 (尽管在这种情况下,如果数组的类型为 PostalCode *array[5] 会更好),那么您可以编写

for ( int i = 0; i < 5; i++ )
{ 
    h->array[i] = malloc( sizeof( PostalCode ) );
}

关于c - 使用结构的邮政编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927488/

相关文章:

javascript - 根据键值对对象数组进行排序或排序

c - strcmp 在 C 中导致段错误

c - 查找文本文件中的字符数、单词数和行数

c - 从 32 位进程获取 64 位进程的命令行字符串

c++ - 将数组指针传递给函数

c++ - 使用 static_cast 将任何指针转换到 char 指针

c++ - 指向数组 c++ 的指针

c - 如何解释C代码: char *s = "hello " "world";

java - 多维 map

javascript - Vuejs数组推送