帮助需要打印指向结构的指针数组 我哪里错了?请帮忙
include <stdio.h>
include <stdlib.h>
define HOW_MANY 7
char *names[HOW_MANY]= {"Simon", "Suzie", "Alfred", "Chip", "John", "Tim",
"Harriet"};
int ages[HOW_MANY]= {22, 24, 106, 6, 18, 32, 24};
struct person
{
char *name;
int age;
};
static void insert (struct person *people[], char *name, int age) {
static int nextfreeplace = 0;
typedef struct person newperson;
newperson *structperson = (newperson*)malloc(sizeof(newperson));
(*structperson).name= name;
(*structperson).age = age;
printf("%s",(*structperson).name);
people[nextfreeplace] = &structperson;
printf("%s",(*people[nextfreeplace]).name);
nextfreeplace++;
}
int main(int argc, char **argv) {
struct person *people[HOW_MANY];
for (int c=0; c < HOW_MANY;c++) {
insert (people, names[c], ages[c]);
}
print the people array here
for (int i=0; i < HOW_MANY;i++) {
printf("%s \n",&(*people[i]).name);
}
return 0;
}
答案 0 :(得分:2)
在malloc中,您将结构体声明为值而不是指针。然后你尝试从那时起引用它作为指针(即用星号取消引用它)。
Here is how I would write it。我进行了一些更改,例如删除静态var(你应该处理你分配它的数组,你的函数不应该存储数组的状态,然后没有其他人可以使用它)。
答案 1 :(得分:0)
我想将数据添加到人物结构中,然后创建一个指向该人的指针数组,然后将其打印出来。目前我得到的输出是不可读的,例如11112012。
答案 2 :(得分:0)
很多风格问题:
malloc
。sizeof(newperson)
。malloc
传递给sizeof *structperson
->
运算符,即structperson->name
代替(*structperson).name
。typedef
和变量的(混淆误导性)名称。HOW_MANY
。sizeof names/sizeof names[0]