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

有关c风格字符串的一些问题还有一些附加的,呵呵

楼主dqh3000()2006-06-01 21:14:38 在 C/C++ / C++ 语言 提问

编译器vc++.net  
  char   *s   =   new   char[5];  
  这样声明一个字符串,用strlen,就是24个长度呢  
  char   *s   =   new   char[4];  
  这样就变成了16个长度  
  为什么这么大差距呢  
  好像听说c风格字符串是一个封装完好的一个结构体,是这样么?  
  如果这样定义和  
  char   *   s   ="hello";  
  不算一种东西?应该是吧,上一个只是动态分配而已么,具体区别有多少  
  s应该只算一个指针而已  
   
  c风格字符串是不是都默认算作常量?  
   
  还有一个问题,垃圾收集器是不是能减少内存泄漏的情况,这个时候delete操作是否非常必要。  
   
  本人自学c++,很多问题不解  
  现在还对函数指针和函数对象抱有疑虑……  
  &s   这样的操作之后,显示的地址和中断之后的变量地址不符合  
  是不是表示c风格字符串能算是一种指针数组,它指向常量区?所以不能直接修改?  
  还有  
  cstring.h  
  里面有些函数编译错误呢……  
  好像里面函数都用汇编写的……  
  汗……  
  觉得我以后还是用  
  c++的string比较好么?  
  主要是这次是做一道题,我觉得用char*比较好……所以才弄了一下,结果发现很多问题  
  问题点数:20、回复次数:5Top

1 楼huang1204(湘西土匪)回复于 2006-06-01 21:19:01 得分 0

楼主找本C++基础书   先看看Top

2 楼wanfustudio(雁南飞:知识之败,慕虚名而不务潜修也)回复于 2006-06-01 21:25:03 得分 0

搂住打字速度肯定比我快:)Top

3 楼rollor_phoe(柔枫)回复于 2006-06-01 22:48:24 得分 0

楼主问的问题挺深刻的,我得好好去研究一下了。Top

4 楼ywhbn(天涯)回复于 2006-06-02 09:30:09 得分 0

char   *p   p就是一个指向字符类型的指针。  
  字符串是常量啊,要不然干嘛叫字符串常量。c风格字符串其实就是'\0'结尾的字符序列Top

5 楼sarh2os()回复于 2006-06-02 11:34:28 得分 20

char   *s   =   new   char[5];  
  这样声明一个字符串,用strlen,就是24个长度呢  
  ........................................................  
  搂主还是没有理解什么是字符串啊!字符串和字符数组的区别是什么?就是后者的最后一个字符时'\0'。也就是说字符串“abc”实际上包含四个字符:'a','b','c','\0'。  
  char   *s   =   new   char[5];  
  这句话是什么意思?这是说你创建了一个含有5个字符的字符型数组。它的最末一位如果不是'\0'的话它就不能称得上是一个字符串!  
  LZ还犯了一个错误就是不理解strlen()的用法。strlen()函数是用来获得字符串长度的函数。也就是说它只能用来测量以'\0'字符结束的字符串。它的返回值是'\0'之前所有字符的个数。如果没有'\0'是肯定得不到正确的值得!而你传给它的指针是指向以'\0’结束的字符串么?答案应该是不一定。因为你new出来的这个字符数组,在你没对其中元素进行初始化的时候,他们的值是随机的。也就是说它有可能是以'\0'结束的。总之,你不能用strlen()去测量一个字符数组的长度。  
  明白了什么是字符串?以及strlen的用法。你的问题就迎刃而解了。  
   
  但是从你描述的问题上看,你对C++学习的太少了。好好看看《C++   primer》再来问问题吧:)  
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:dqh3000
  • sarh2os

相关链接

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

广告也精彩

反馈

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