【快来看!】有意思的TC和VC问题!
kgbcn 2007-06-15 01:03:09 学习C/C++ 也有一段时间了,一直在同时使用TC与VC两款编译器,发现在使用指针的时候有一个挺有意思的现象:
1.指针在赋值的时候:
#include "iostream.h"
void main()
{
int *p,x;
cin>>x;
*p=x; //这一行在VC中可正常编译,但在运行时会出错,退出程序。必须改成 p=&x; 但TC则没有问题。
cout<<endl<<p<<endl<<endl<<*p<<endl;
}
该代码用TC和VC都可以编译通过,但是用VC编译的程序在运行过程中会出现程序错误,程序会被中止,必须将 *p=x; 改成 p=&x;才能正常运行,可是在TC中 *p=x; 和 p=&x 这两行无论那一行都可以正常运行。
2.在结构体中:
这个就更奇怪了
#include "iostream.h"
typedef struct studend
{
int num;
char name[8];
}stud;
void main()
{
stud *k;
k=new stud; //这一行加与不加在TC中都可以正常编译并正常运行,但在VC中如果不加的话只能正常编译,运行时却会出错退出程序。
cout<<"输入编号:";
cin>>k->num;
cout<<"输入姓名:";
cin>>k->name;
}
想请问一下,上面这些代码出错到底是因为TC与VC中的那些不同造成的啊?
TC编译器和VC编译器到还有那些区别啊?
请大家帮帮忙啊?
我说的TC是指支持C++的Turbo C++