我无法理解这个程序的奇怪行为。我有 2 个文件,file1.c 和 file2.c
文件.c 是
#include <stdio.h>struct ll {
int key;
struct ll *next;
};
extern void func(struct ll*);
int main(void)
{
struct ll l = { 1, &l };
printf("%d %d\n",l.key,l.next->key);
func(&l);
return 0;
}
和 file2.c 是:
#include <stdio.h>
struct ll
{
struct ll *next;
int key;
};
void func(struct ll *l)
{
printf("%d \n",l->key);
printf("%d \n",l->next->key);
}
现在当我编译并运行它时,它显示分段错误。但是如果我将 struct ll 替换为 file2.c :
struct ll
{
int key;
struct ll *next;
};
然后它工作正常。我的意思是仅仅通过交换声明的顺序,它就会影响输出。