C语言 字符指针

1、介绍

概念:

字符指针,就是字符类型的指针,同整型指针,指针指向的元素表示整型一样,字符指针指向的元素表示的是字符

假设:

char ch = 'a';

char * pc = &ch; 

pc 就是字符指针变量,字符指针变量是用来存放字符的地址。

但是,字符指针除去单一的字符,还可以寄存字符串。

char * p = "abcdefghi";

而对于字符串而言,我们首先要知道,上述表达式中的字符串是一个常量字符串,无法被修改,且并不是将整个字符串的地址寄存在了字符指针变量p中。

而是将字符串的首个字符的地址寄存在了字符指针变量p当中。

就如同数组一样,数组名代表的仅仅是数组的首元素地址一样。

char * p = {'a','b','c','d','e','f','g','h','i','\0'} 

而且在进行打印 * p 之后,打印出的结果也仅仅是字符串的首个字符  a 

  2、对比

C语言 字符指针_第1张图片

 如上所示,str1和str2都为数组,是数组之间的比较。

而str3和str4都为指针,是指针之间的比较。

在str1和str2的比较过程中,许多人会产生一个误区,为什么str1和str2的数组内容一致,但为什么不相等呢?

答案是,str1和str2虽然说数组的内容一致,但二者都身为数组,对于数组中寄存元素,首先要进行的是在内存中申请一个空间,而后,二者的数组名不同,自然申请的空间就并不相同。

其次,在申请空间后,空间中所代表的地址也并不相同,所以str1和str2的数组内容虽是相同,但二者在内存中申请的空间并不相同。

就像酒店的宾馆,虽然房间的配置一样,但你能说101牌号的房间等于102牌号的房间吗。

二者所处的空间根本不一致!

C语言 字符指针_第2张图片

 而str3和str4,二者均为字符指针变量,且二者存储的内容都是同一个字符串中的首个字符,且寄存在字符指针变量中的字符串是常量字符串,无法进行修改。

所以二者指向的是同一个字符串,也寄存的是同一个地址,所以本质上,str3和str4是相同的。

你可能感兴趣的:(C语言,c语言,开发语言,指针)