char、char * 、char[] 、string 、CString简介及相互转换(一)

char 

char表示字符类型,一个char变量只能存储一个字符


char *

char * 是一个指向字符的指针,可以指向一个字符,也可以表示字符数组的首地址(首字符的地址)。一般使用的它的第二的功能来表示一个字符串,功能与字符串数组char ch[n] 一样。


char []:字符串数组

char* 和 char[] 相同点:

  • char*和char[]这两种类型都可以对应一个字符串
char * a = "hello1";  
char b[] = "hello2";
// 其中a是一个指向char变量的指针,b则是一个char数组(字符数组)
  • 都是以'\0'结尾
  • 很多时候二者可以混用,像函数传参数的时候,实参可以是char*,形参可以是 char[],反过来实参可以是char[],形参可以是 char *也是可以的

char 和 char[] 不同点:

  • char*声明一个指针变量,其值(指向的内存区域)可以改变(这里的改变是可以指向另一个字符串,而不是修改字符串本身(似乎有问题));char[] 是常量(其实质是一个地址——C语言中规定数组代表数组所在内存位置的首地址,也是 str[0]的地址,即str = &str[0]),值不能改变。
char* a = "string1";  
char b[] = "string2";  
a = b; //OK  
a = "string3"; //OK  
b = a; //报错!左边操作数只读  
b = "string3" //报错!左边操作数只读

char * p 的 p是指向一块内存区域,它指向的内存区域的大小可以随时改变,而当指针指向常量字符串时,常量字符串的内容是不可以被修改的,否则在运行时会报错。

char p[] 的 p 是数组对应着一块内存区域,其指向的地址(首元素地址)和容量在生命期里不会改变,只有数组的内容可以改变。

C语言中数组名可以复制给指针表示地址, 但是指针却不能赋给给数组名,它是一个常量类型,所以不能修改。

当定义 char a[10 ] 时,编译器会给数组分配十个单元,每个单元的数据类型为字符。 而定义 char *s 时, 这是个指针变量,只占四个字节,32位,用来保存一个地址。

  • char[] 对应的内存区域总是可写,char* 指向的符号常量不能写

string

string是C++标准库(STL)中的类型,它是定义的一个,定义在<string>头文件中。里面包含了对字符串的各种常用操作,与char * 相比,其优势在于内容可以动态拓展、字符串操作的方便快捷,用 + 号进行字符串的连接等操作。

 

参考:“C/C++中char* 和 char「」区别

未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值