我無法理解這段代碼。我不明白爲什麼sx,sa,sy的值是相同的,這意味着42。我知道它必須對指針做些什麼。如果有人可以解釋爲什麼值相同?
#include <stdio.h>
static int sx;
static int sa[100];
static int sy;
int main() {
int *p;
for(p=&sx; p <=&sx+200; p++)
{
*p = 42;
}
printf("sx = \t%i\n",sx);
printf("sa[0] = \t%i\n",sa[0]);
printf("sa[109] = \t%i\n",sa[109]);
printf("sy = \t%i\n",sy);
getchar();
}
它被稱爲「未定義的行爲」。你很幸運,你沒有打開一個黑洞並殺死我們所有人。 – Cornstalks 2013-03-27 04:39:04
爲了迴應現在刪除的評論,爲什麼它沒有給出錯誤:「未定義的行爲」意味着行爲是從字面上未定義的。也就是說,*由於所做的事情*會發生任何事情。如果C標準要求給出錯誤,那麼行爲將被定義爲*(not * un * defined)(它只會被定義爲給你一個錯誤)。未定義的行爲完全沒有定義當你做某事時會發生什麼。 – Cornstalks 2013-03-27 04:46:00