arrays - 访问动态分配的指向结构的指针数组的成员
问题描述
name
我需要一个全局动态指针数组,我将在其中存储我的结构,因为稍后我需要遍历这个数组以列出所有存储的信息,我age
还需要能够job
从控制台,并将它们存储在person_t
数组中iterator
。
#include <stdio.h>
#include <stdlib.h>
typedef struct Person
{
char name[30];
int age;
char job[30];
} person_t;
person_t **iterator;
int capacity = 10;
int size = 0;
int main()
{
int i;
*iterator = (person_t *)malloc(capacity * sizeof(person_t));
for (i = 0; i < capacity; ++i)
{
person_t p;
p.age = i;
*iterator[i] = p;
}
return 0;
}
编译此代码(gcc -ansi -pedantic -Wall -Wextra)时我没有收到任何错误/警告,但是当我尝试运行它时,我会Segmentation fault
立即得到一个。
解决方案
当你这样做时:
*iterator = (person_t *)malloc(capacity * sizeof(person_t));
您正在推迟iterator
,但是作为文件范围指针变量,它被初始化为 NULL。尝试取消引用 NULL 指针会调用未定义的行为。
我怀疑你真正想要的是一个结构数组,而不是一个指向结构的指针数组。既然如此,定义iterator
为:
person_t *iterator;
然后你像这样为它分配内存:
iterator = malloc(capacity * sizeof(person_t));
然后像这样分配给数组元素:
iterator[i] = p;
推荐阅读
- node.js - 使用nodejs在html中使用promise和输出获取axios
- sql-server - 如何将 SQL Server 数据库还原到文件共享位置?
- javascript - 尝试使用 httpClient 和 angular 8 从 api 显示单个项目时是否有修复?
- c++ - 从 'const char*' 到 'char*' Arduino Uno 的 C++ 无效转换
- python-3.x - 我该怎么做才能修复代码以使嵌套循环在 python 中工作
- python - 调用对象构造函数的未定义变量错误
- css - 当外部div具有奇数宽度和高度时如何居中对齐项目
- java - Java:使用线程检查条件
- java - 在映射键集流上应用带有 anyMatch() 的谓词,并在谓词为 false 时返回一些结果
- java - 创建以元组为键的哈希表