char* const cp 和 const char* p 的区别


0.char* const cp 和 const char* p 的区别

char * const cp : 定义一个指向字符的指针常数,即const指针

其实const 放在cp前证明cp是一个const,cp是不允许改变的

const char* p : 定义一个指向字符常数的指针

同理,const 是c描述char的,char是const,所以指针可变

char const* p : 等同于const char* p

const char **p是一个指向指针的指针,那个指针又指向一个字符串常量。
char ** p也是一个指向指针的指针,那个指针又指向一个字符串变量。

1. const char* 和string 转换

(1) const char*转换为 string,直接赋值即可。

EX: const char* tmp = "tsinghua".

string s = tmp;

(2) string转换为const char*,利用c_str()

EX: string s = "tsinghua";

const char*tmp = s.c_str();

2. char*和const char*之间的转换

(1) const char*转化为char*,利用const_cast<char*>

EX: const char* tmp = "tsinghua";

char* p = const_cast<char*>(tmp);

(2) char*转化为const char*,直接赋值即可。

char* p = "tsinghua".

const char* tmp = p;

3. char*和string之间的转换

有了1和2的基础,char*和string转化就很简单了。

(1)char*转化为string,直接赋值即可。

EX: char* p = "tsinghua".

string str = p;

(2)string转化为char*,走两步,先是string->const char*,然后是const char*->char*

EX: string str = "tsinghua";

char* p = const_cast<char*>(str.c_str()):

String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似.
1
2
3
4
Strings1,s2;
s1="abc";
s2=s1;
s2="def";
//这样操作之后s1是"abc",s2是"def".
1
2
3
4
5
6
stringa="hello,world!";
stringb="hello,world!";
stringc="hello!";
stringa="hello,world!";
stringb="hello,world!";
stringc="hello!";
a 和 b 是不是指向同一个地址呢,这个问题在各论坛都是谈论很激烈,其实很简单,跟下这些字符串的内存地址就好了
1
stringa="hello,world!";
1
2
00000042moveax,dwordptrds:[02A62208h]
00000048movdwordptr[ebp-44h],eax
1
stringb="hello,world!";
1
2
0000004bmoveax,dwordptrds:[02A62208h]
00000051movdwordptr[ebp-48h],eax
1
stringc="hello!";
1
2
00000054moveax,dwordptrds:[02A756F8h]
0000005amovdwordptr[ebp-4Ch],eax
a的地址指向02A62208h,b的地址也是02A62208h,这说明了什么,创建b的时候.net机制肯定是先去查找内存中是否有这个字符串的内存地址,如果有则指向,没有才创建[1] 

优质内容筛选与推荐>>
1、Alpha 冲刺 (2/10)
2、论文阅读(Wei Xiu-Shen : Mask-CNN:Localizing parts and selecting descriptors for fine-grained bird species categorization)
3、SVM学习
4、懒人看球
5、Lucene.net中文分词探究


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号