访问C中的结构元素

1 c

我试图在最里面的结构中访问元素asd7,这是我的代码:

#include <stdio.h>

int main()
{
 struct asd
 {
  int asd;
  struct asd1
  {
   int asd1;
   struct asd6
   {
    int asd7;
   }asd6;
  }asd1;
 }asd;
 int asd10;
 int asd11;
 struct asd *ptr1;
 struct asd1 *ptr2;
 struct asd6 *ptr3;
 asd.asd1.asd6.asd7=10; 
 printf("%d\n",asd.asd1.asd6.asd7);

}
Run Code Online (Sandbox Code Playgroud)

代码正在编译但我无法运行它 - 我遇到了分段错误.任何帮助都会很棒.

谢谢

输出是:

10

Exited: ExitFailure 3
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 5

你的代码没有任何问题,return 0;最后一个简单的东西无法修复:-)

无:

pax> cat qq.c ; gcc -o qq qq.c ; ./qq ; echo rc=$?

#include <stdio.h>
int main (void) {
    struct asd {
        int asd;
        struct asd1 {
            int asd1;
            struct asd6 {
                int asd7;
            } asd6;
        } asd1;
    } asd;
    asd.asd1.asd6.asd7=10;
    printf("%d\n",asd.asd1.asd6.asd7);
    //return 0;
}

10
rc=3
Run Code Online (Sandbox Code Playgroud)

附:

pax> cat qq.c ; gcc -o qq qq.c ; ./qq ; echo rc=$?

#include <stdio.h>
int main (void) {
    struct asd {
        int asd;
        struct asd1 {
            int asd1;
            struct asd6 {
                int asd7;
            } asd6;
        } asd1;
    } asd;
    asd.asd1.asd6.asd7=10;
    printf("%d\n",asd.asd1.asd6.asd7);
    return 0;
}

10
rc=0
Run Code Online (Sandbox Code Playgroud)

另一种方法是切换到C99编译器(或模式).C99标准部分(转述)陈述:

如果main函数的返回类型是与int兼容的类型,则从初始调用返回main函数等效于调用exit函数,并将main函数返回的值作为其参数:到达终止函数的} main函数返回值0.

(我的斜体).