7.3.4 字符串的指针和指向字符串的指针变量
C语言中的字符串是按字符数组来处理的,系统在内存中开辟了一个字符数组来存放字符串。在程序中,可以使用指向字符串的指针变量来处理字符串。
字符串的指针是该字符串的地址,是该字符串中最开头那个字符的地址。
C语言规定:字符串代表了自身的地址。
例如:
此时,指针变量p1指向字符串“how are you”的首地址,p2指向字符串“fine”的首地址。由于p1和p2是指针变量,只能赋地址值,语句char *p1="how are you";是将字符串“how are you”的地址赋给指针变量p1,不是直接将字符串“how are you”赋给指针变量p1。
上面两行:
指针变量p1一旦被定义,它只能指向一个字符变量或其他字符型数据,不能同时指向多个字符型数据,更不是将“how are you”这些字符存放到p1中,也不是将字符串“how are you”赋给p1,只是将字符串“how are you”的首地址赋给p1。
下面的定义是错误的。
用字符指针变量输出字符串的一般方法如下:
运行结果如下:
例7.12 字符串指针变量直接赋值操作。程序如下:
程序运行结果如下:
程序中语句p1=p2;是将p2所指向的字符串"fine,thank you!"的存储地址赋给p1,使p1也指向的字符串"fine,thank you!",并不是将整个字符串"fine,thank you!"直接赋给p1。
例7.13 将字符串a复制为字符串b。
程序如下:
程序运行结果如下:
注意:
①在程序中使用指针变量时,必须先对其进行赋值。如果未对指针变量赋以地址值,那么该指针变量并没有具体指向某一个字符型数据,这样,有可能造成系统破坏。
②字符指针变量的值是可以改变的,但字符串的地址是不能改变的。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。