0
我無法理解這個程序的怪異行爲。我有2個文件,在file1.c和file2.c中結構聲明的順序改變輸出
file.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);
}
現在,當我編譯並運行它,它顯示分段故障。但是,如在file2.c中,如果我將struct ll替換爲:
struct ll
{
int key;
struct ll *next;
};
然後它工作正常。我的意思是通過交換聲明的順序,它影響了輸出。
見我的編輯,希望它更清楚,如果沒有,我會嘗試更多。 – MByD 2012-04-01 04:34:15
非常感謝:)。現在清楚了,看了編輯後的版本 – Jatin 2012-04-01 04:36:54
在兩者之間,你從gcc的哪個參數中產生了這個輪廓? – Jatin 2012-04-01 04:49:37