【快来看!】有意思的TC和VC问题!

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:17:03
学习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

你说的区别就是,在TC中指针不指向具体的地址,不会出错,
在vc中它会出错!
因为,指针不指向具体的指针,非常危险,可见vc检查错误的能力更强。
具体主要是TC与VC中查错程序的不同。

@_@ 不知道还有TC++的。。。。。

没试过