2010-08-30 104 views
1

我试图进入最里面的结构内的元素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

请发布完整的程序。 ('#include'不会被编译。)否则,代码没有任何特别的错误。 – 2010-08-30 05:00:27

+0

使用正确的#include,它在这里工作http://codepad.org/18Vca84m。 – 2010-08-30 05:09:41

+0

Bods,裸体包含是使用'pre'标签而不是代码缩进的效果。我解决了这个问题,并将输出移到了这里。 – paxdiablo 2010-08-30 05:42:06

回答

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 

With:

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标准状态,部分(转述):

如果主函数的返回类型与INT兼容的类型,从最初的呼叫至主函数的返回相当于调用与出口功能由主功能作为它的参数的返回值:到达}终止了 主函数返回0

(我的斜体字)的值。

+1

这是一个完全荒谬的分流,但我通常做'gcc -o qq qq.c && ./qq && ...' - 因为否则如果它不能编译,最终会运行最后一个版本,而不是: ) – detly 2010-08-30 06:03:28