前两天使用VS2005Team(盗版)弄C语言的时候,发现指针异常的难用,明明刚设立的变量都没有初始化就不为NULL了。搞得头昏昏的。
今天重新实验了一遍,又用刚装的VS2008Professional(正版)。请看如下代码:
#include <stdio.h>
struct node
{
int id;
struct node *n;
};
struct node *n;
int main(int argc, char *argv[])
{
if (n==NULL)
{
printf("ERROR/n");
}
else
{
printf("%d /n", n->id);
}
return 0;
}
在2005和2008里边编译运行的结果均为: ERROR
但是如果把 7行移动到9行的位置,那么在2005和2008中结果均为:程序遇到问题需要关闭 ........
如果在刚才的改动基础上,在这一句话前或后加上一句 int a=0;那么在2005种结果为:2025346902(或者其他数)
在2008中结果为:ERROR。
毕竟不是计算机专业的,对于堆栈始终没有搞明白,而且对于指针一直都有点迷糊。
本来我就是这样一个人了,偏偏拿到的编译器还这个样子,两个版本不对劲。
不过现在发现了这个问题,对于之前一直想要解决的那个问题看来有希望了。
另外,昨天使用2005编译spidermonkey,始终不成功,今天装了2008之后,再用2005编译,又成功了。
昨天最后使用VC6编译成功,但是只能用Debug模式下的,Release下不能用;今天虽然使用2005和2008都编译成功了,但是在命令行下运行作为shell时还好,解析js文件遇到函数就抱错,当然遇到其它东西也可能报错。郁闷。
还有就是今天装了2008,比2005小很多,发现没有windowsSDK,虽然安装过程中说了装。但是没有找到,不过使用<windows.h>还是没有问题的,不知道怎么回事。
这些东西越来越大、越变越复杂,时代的脚步,到底是谁在走啊?