char*型内存调用问题
在c++中和C中有什么区别呀?
我在Turboc2中运行
main()
{
char* c;
scanf("%s",c);
printf("%s",c);
}
运行结果正确,而在C++中
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char *c;
cin >> c;
cout <<c;
system("PAUSE");
return EXIT_SUCCESS;
}就会出问题
为什么呀?
问题点数:20、回复次数:12Top
1 楼egg43()回复于 2005-06-01 09:45:00 得分 0
指针没初始化!应该2个都会出错吧?Top
2 楼whyglinux(山青水秀)回复于 2005-06-01 09:50:36 得分 0
两个程序的行为都是无定义的,因为没有分配指针指向的内存空间。因为是无定义的行为,无法预测程序的执行会得到什么结果。Top
3 楼brianlu(-)回复于 2005-06-01 09:53:06 得分 4
char * c;
c是一个指针,指向一块随机的内存区域.
cin>>c,
把STDIN的东西写入c指向的内存区域。
有问题啊.Top
4 楼darkstar21cn(≮天残≯无畏)(死亡进行时)回复于 2005-06-01 09:53:26 得分 4
这个前些天看到有人问过的。
偶的回答是:
TC这时候在误导人,无论C还是C++,这个声明char* c,都不应该是给分配空间的。
char* c;这时c != NULL,它是指向一个地址的,只是这个地址不一定是你可以用的。而在VC中c == 0XCCCCCCCC(大概是这个),Win32认为这是一个无效地址,所以程序出错。
所以在声明指针的时候,最好这么写char* c = NULL;(华为就是这么要求的)。Top
5 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 09:55:10 得分 0
指针么指向任何有效内存空间。tc是垃圾阿可见。Top
6 楼foochow(无聊,灌水......)回复于 2005-06-01 11:04:11 得分 2
char *c;都没有分配空间当然出错拉~~~-_-
Top
7 楼magic_lu2008(魔笛)回复于 2005-06-01 11:42:19 得分 2
楼上第三格比较正解.声明指针应该初始化,并且分配内存空间.Top
8 楼xiaoluoli(C/C++思考)回复于 2005-06-01 11:55:34 得分 2
在c++中和C中有什么区别呀?
======================
从着位老弟的问题我们最能看出C++与C的不同了。
char *c;
cin >> c;
这里在TC中可能不用分配空间就能赋值,编译器检查不出错误!
但是它暗藏了很严重的错误!(指针未初始化)。
而VC编译器要求严格,在这种指针未初始化的情况下他会报错,这样能更好的避免因为指针未初始化而造成的严重后果。所以VC编译器好。
Top
9 楼xiaoluoli(C/C++思考)回复于 2005-06-01 11:57:21 得分 2
所以从上面的问题看出c++比C的语法要求严格一些Top
10 楼guyaguya(我只愿面朝大海,春暖花开)回复于 2005-06-01 12:39:47 得分 2
这不是c和c++的问题
是程序员的问题Top
11 楼fenonly(寂寞程式)回复于 2005-06-01 14:31:09 得分 2
我同意楼上的说法,我也是学C的,我们老师说过:学c,其实就是你自己去找一条最好走的路.而学vc,则是它们安排好了一切走的方式,你只要顺着他们的路走就一定不会又错的,你说:哪个编译比较好呢?谁比较能更好地发挥我们的潜能呢?Top
12 楼jhw4048(雨之魂)回复于 2005-06-01 15:01:49 得分 0
指针没有初始化Top
相关问题
- VB.NET调用正规DLL,内存出错
- 调用AfxMessageBox 会内存泄漏!!!!!!
- 我用new(char[int])或者malloc(int*sizeof(char))分配内存(int>4),为什么对得到的指针调用sizeof()函数只有4?
- 急!!VB如何调用参数为char*类型的DLL
- 调用char *成员函数
- c语言中,某个函数返回char* ,内存空间一般是在这个函数里面申请,由函数调用者释放吗?
- C#调用DLL,DLL中的unsigned char*该转换成什么类型?
- 原型为int _stdcall omrg(char * buf)的非托管DLL在C#里怎么调用?
- SOS!!!急需C++算法调用扩充内存
- vb作一com组件,cb调用时,出现内存错误




