我无法理解这段代码。我不明白为什么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