首页 > 学院 > 开发设计 > 正文

浅析char*和char c[]

2019-11-06 07:47:51
字体:
来源:转载
供稿:网友

直接看例子

#include <iostream>#include <string>using namespace std;int main(){	char* a = "12345";	char b[] = "12345";	cout << a << endl;   //输出12345	cout << b << endl;   //输出12345	cout << sizeof(a) << endl;  //4,a是一个指针,大小为4	cout << sizeof(b) << endl;  //6,输出字符串b的长度,末尾有一个'/0'	//a[0] = '1';   //运行时报错,因为a指向的内容是常量	b[0] = '2';     //修改成功	a = b;	a[0] = '1';     //修改成功,因为a现在指向的是b,是一个字符串数组,不是常量	cout << (void*)a << endl;  //输出a,a为char指针,本质上是个地址,	                           //但是输出char指针会输出其指向的字符串,所以要抓换成其他类型的指针	cout << (void*)b << endl;  //同上	cout << &(a[1]) << endl;   //输出2345,以为对a[1]取地址之后,本质上又变成了一个char*	cout << &(b[1]) << endl;   //同上	cout << (void*)&a[1] << endl;        	cout << (void*)(a + 1) << endl;  //两种方式都能输出a[1]的地址	const char* c = "12345";	//c[1] = 1;     //编译报错,因为c指向的内容是const的	c = b;          //但是c不是const的,可以修改指向	char* const d = b;	d[1] = '1';     //修改成功,b是字符串数组,不是常量	//d = a;        //编译报错,因为d本身是const的		const char i[] = "12345";	//i[0] = '1';   //编译报错	//i = b;        //编译报错	char const j[] = "12345";	//j[0] = '1';   //编译报错	//j = b;        //编译报错	//所以i和j两种写法都是同一种类型,没有区别。	return 0;}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表