C语言指针在VS中的不同?

来源:互联网 发布:ubuntu麒麟共享文件 编辑:程序博客网 时间:2024/04/29 20:45

前两天使用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>还是没有问题的,不知道怎么回事。
这些东西越来越大、越变越复杂,时代的脚步,到底是谁在走啊?  
原创粉丝点击