这是我编写的代码,用于使用指针从结构中打印出字符串:
#include <stdio.h>
#include <stdlib.h>
struct xenon
{
int size1;
int marks[10];
char *w;
struct xenon *p;
} x1,x2;
main()
{
x1.size1=10;
x2.size1=6;
printf("%d\n",x1.size1);
printf("%d\n",x2.size1);
(*p).w="my word";
printf("%s\n",(*p).w);
printf("%s\n",x1.w);
}
现在我收到一条错误消息,说我还没有在函数 main 中声明变量 p。但是我声明的时候也应该是这样
x1.w="my word";
printf("%s",x1.w);
我也试过在结构外声明指针变量,但它仍然无法编译。 我如何声明指向结构的指针有问题吗?还是完全是别的东西?
最佳答案
发生编译时错误是因为 p 是结构的成员,而不是作用域中的变量。因此,请这样调用它,就像您调用它的 sibling 一样。
(*x1.p).w="my word";
printf("%s\n",(*x1.p).w);
修复该问题后,您将遇到 Steger 在上面评论中提到的运行时错误。您可以将 x1.p 分配给 &x2。但是,如果您尝试创建链表,则更常见的情况是您希望将 x1.p 分配给动态分配的结构。
关于c - 指向不返回字符串的结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719710/