指向字符的指针和指向字符串的指针
看到一个题目:
const char * pt;
问pt是指向字符常量的指针还是指向字符串常量的指针?
貌似这样定义了以后既可以指向一个字符,也可以指向一个字符?到底是有什么区别呢?
[解决办法]
指向一个字符的指针,可以指向字符串的第一个字符。
[解决办法]
C没有, 字符串,这种数据类型,只有字符数组类型;
C有字符串字面值---这是字符串常量,是一个带有结束符的字符常量数组。
C的字符指针,可以指向,字符数组的第一个元素;
这样这个指针,就是(不是指向)字符数组的首地址;
这种指针,可以看作字符串;
如果数组里存在字符串结束符的话。
C 不存在,字符串指针这种数据类型。
确切地说,C不存在字符串指针;
C++有一个标准库实现的字符串类类型。
如果,真要确认,一种数据类型,为字符串指针类型的话;
那么,C++,string * 就是一种,比较恰当的C++数据类型。
[解决办法]
任何一个数据类型的指针,
都可以,指向单个数据(变量,常量),
也都可以,指向数组的首元素(其实任意一个元素都可以)
所以字符指针指向字符,或者指向字符串(字符数组)的第一个字符(第 n 个字符);
除了字符串字面值(字符串常量)
1)用双引号括起来,
并且,
2)
可以用字符指针持有(指向首元素),
3)
可以用const 指针,也可以用非const 指针,指向字符串字面值(字符串常量)的首元素。
这种情况比较特殊外。
字符类型指针,和其他类型指针,并无太多不同。