(使用C) 如果我想调用结构的给定属性,我只需使用符号struct.attribute。但是,有时,有问题的属性是指向另一个结构的指针。在这种情况下,我将使用struct.pointer_to_struct。 那么,我如何调用指向的结构的属性?编写:struct.pointer_to_struct->属性似乎合乎逻辑,但编译器不接受这一点。 这是一个例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct thing
{
char gender[6];
char name[21];
struct thing **friends;
};
int main(void)
{
struct thing things[3];
strncpy(things[0].name, "Bob", 21);
strncpy(things[1].name, "Kelly", 21);
strncpy(things[1].gender, "Female", 6);
things[0].friends = &things[1];
printf("%s is friends with %s\n", things[0].name, things[0].friends->name);
return 0;
}
行printf(“%s是%s的朋友\ n”,东西[0] .name,东西[0] .friends-&gt; name);由于事物[0] .friends-&gt;名称而没有编译。 我想找到一些方式说“鲍勃是凯莉的朋友”,当时仅针对鲍勃进行编码。
答案 0 :(得分:1)
这不是指向struct&#34;的指针。但是一个&#34;指向struct&#34;,a.k.a。和#34;指向struct(s)指针数组的指针的指针&#34;:
struct thing **friends;
因此您需要打印
things[0].friends[0]->name
第一位朋友,第二位朋友friends[1]->name
,依此类推。
(但是因为你没有任何&#34;朋友数量和那里的整数变量,所以可能很难使用它。你也是以错误的方式填充变量,你会需要创建一个额外的数组,其中包含指向朋友的各个指针,例如在堆上。)
答案 1 :(得分:0)
struct thing
{
char gender[6];
char name[21];
struct thing **friends; // why thing **
};
它应该是,
struct thing *friends
而非struct thing **friends