设为首页 | 加入收藏
当前位置: 主页 > www.387878a.com >

char str = aaaa 和chastr[] = a有啥区别

时间:2019-10-31 00:28来源:未知 作者:admin 点击:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  首先第一个指针形式的str指向一个字符串,这样指向以后就不能通过str对abcdef这个字符串修改了,但是你可以给str用别的字符串再赋值,这样他就指向了别的字符串,但是一旦指向某个字符串,就不能通过这个指针对字符串修改了。

  第二种数组形式的str,其实数组名就是指针常量,刘伯温一马中特依法有序行车,智利国家男子足球队的介绍。也就是说一旦他初始化了,它指向的地址就固定了,就不能再用别的字符串赋值了(这就不同于指针形式的str),但是这个地址里放什么是可以改变的(指针形式的就不能改变了),比如说初始化之后在通过cinstr改变数组的内容还是没有问题的。

  char Str[]=abcdef;这种写法是没有问题的,这样不写数组大小但必须要对其初始化,如果没初始化就必须声明数组大小。

  展开全部CString类功能强大,比STL的string类有过之无不及.新手使用CString时,都会被它强大

  的功能所吸引.然而由于对它内部机制的不了解,新手在将CString向C的字符数组转换时

  以上两种用法都是正确地.因为strncpy的第二个参数类型为const char *.所以编译器

  1.LP表示长指针,在win16下有长指针(LP)和短指针(P)的区别,而在win32下是没有区别

  接下来我们看在非UNICODE情况下,怎样将CString转换成char *,很多初学者都为了方便

  在Debug下运行出现了异常,我们都知道CString类内部有自己的字符指针,指向一个已分

  配的字符缓冲区.如果往里面写的字符数超出了缓冲区范围,当然会出现异常.但这个程

  序在Release版本下不会出现问题.原来对CString类已经进行了优化.当需要分配的内存

  小于64字节时,直接分配64字节的内存,以此类推,一般CString类字符缓冲区的大小为

  按说我们只改变了str,str1应该没有改变呀,可是事实时他们都变成了aa.难道str和

  str1里面的字符指针指向的缓冲区是一个.我们在Effective C++里面得知,如果你的类

  内部有包含指针,请为你的类写一个拷贝构造函数和赋值运算符.不要让两个对象内部的

  在系统内部产生大量的CString临时对象.这时为了优化效率,就采用在系统软件内部广

  泛使用的写时复制概念.即当从一个CString产生另一个CString并不复制它的字符缓

  冲区内容,而只是将字符缓冲区的引用计数加1.当需要改写字符缓冲区内的内容时,才

  分配内存,并复制内容.以后我会给出一个写时复制和引用计数的例子

  我们回到主题上来,当我们需要将CString转换成char *时,我们应该怎么做呢?其时只是

  当我们需要字符数组时调用GetBuffer(int n),其中n为我们需要的字符数组的长度.使

  还有很重要的一点就是,在能使用const char *的地方,就不要使用char *

------分隔线----------------------------
官家婆水心论坛四不像 新版牛磨王管家婆彩图 11303 管家婆奖结果一 www.387878a.com www.330110k.com
Power by DedeCms