1.字符串指针变量
首先明确:存放变量地址的变量为指针变量。
1.1 字符串指针变量的定义形式
char *p= "i like";
这里p就是一个字符串指针变量。p存放的是字符串“i like”的首地址。
1.2 通过字符串指针变量访问字符串的方式
char *p = "i like";
//打印i
cout<<p[0]<<endl;
//打印整个字符串"i like"
cout<<p<<endl;
我们可以通过指针变量带下标的方式访问字符串的具体元素。打印时直接写指针变量,那么c++编译器会从字符串的首地址开始打印,直到遇见“\0"停止。(注:每个字符串,c++编译器都会在其末尾加上“\0”)
1.3 字符串指针变量的注意事项
不能用指针变量带下标方式改变具体元素
char *p = "i like"
p[0] = "t"
//这个是错误的。因为p[0]是字符串常量,不可更改。
如果将一个字符串的值复制给一个开辟好空间的指针变量,利用strcpy函数
char *p = "i like"
char *t
t = new char[strlen(p)+1]
strcpy(t,p)
2 字符串数组
2.1 字符数组的定义方式
char k[] = "i love"
这里k[是一个字符数组。数组名是字符串的首地址。
2.2 字符数组的访问方式
char k[] = "i love";
//打印具体元素 i
cout << k[0]<<endl;
//打印整个字符串
cout<<k<<endl;
可以看到字符数组的访问方式和字符串指针变量相同。
2.3 字符数组的注意事项
与字符串指针变量不同的是,具体元素的改变
char k[] = "i love";
k[0] = p;
//这个是正确的,这里k[0]是一个char型变量
还有就是以下两种情况是不等价的
char k[6] = "i love";
//不等价于
char k[6];
k[6] = "i love";
但是字符串指针变量下面的情况是等价的
char *p = "i love";
//等价
char *p;
p = "i love";
参考链接:https://blog.csdn.net/Cheney012/article/details/84950350