访问C中的结构元素

时间:2010-08-30 04:58:28

标签: 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);

}

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

由于

输出结果为:

10

Exited: ExitFailure 3

1 个答案:

答案 0 :(得分: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

使用:

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

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

  

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

(我的斜体)。