CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C++ 语言

char*型内存调用问题

楼主n88n(快捷方式)2005-06-01 09:31:30 在 C/C++ / C++ 语言 提问

在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调用时,出现内存错误

关键词

  • c++
  • 指针
  • 内存
  • 编译器
  • vc
  • 初始化
  • 指向
  • 空间
  • 问题
  • tc

得分解答快速导航

  • 帖主:n88n
  • brianlu
  • darkstar21cn
  • foochow
  • magic_lu2008
  • xiaoluoli
  • xiaoluoli
  • guyaguya
  • fenonly

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo