c - 指向不返回字符串的结构的指针

标签 c pointers structure instance-variables

这是我编写的代码,用于使用指针从结构中打印出字符串:

#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/

相关文章:

c - 在空行中打印变量结果

c - C 中的无符号值

c - 段错误(核心转储)从 argv 打印字符串

c - 有没有办法用 C ping 一个特定的 IP 地址?

无法理解如何从 C 中的函数返回字符串

c - 为什么全局指针不能重新指向另一个对象,而局部指针可以?

c - 用 calloc 分配的多维数组

c - 等同于两个二维指针-二维数组

c++ - 将二维结构数组传递给函数

json - golang 嵌套结构和映射