首页 百科知识 字符串的指针和指向字符串的指针变量

字符串的指针和指向字符串的指针变量

时间:2023-09-22 百科知识 版权反馈
【摘要】:在程序中,可以使用指向字符串的指针变量来处理字符串。此时,指针变量p1指向字符串“how are you”的首地址,p2指向字符串“fine”的首地址。由于p1和p2是指针变量,只能赋地址值,语句char *p1="how are you";是将字符串“how are you”的地址赋给指针变量p1,不是直接将字符串“how are you”赋给指针变量p1。如果未对指针变量赋以地址值,那么该指针变量并没有具体指向某一个字符型数据,这样,有可能造成系统破坏。

7.3.4 字符串的指针和指向字符串的指针变量

C语言中的字符串是按字符数组来处理的,系统在内存中开辟了一个字符数组来存放字符串。在程序中,可以使用指向字符串的指针变量来处理字符串。

字符串的指针是该字符串的地址,是该字符串中最开头那个字符的地址。

C语言规定:字符串代表了自身的地址。

例如:

img489

此时,指针变量p1指向字符串“how are you”的首地址,p2指向字符串“fine”的首地址。由于p1和p2是指针变量,只能赋地址值,语句char *p1="how are you";是将字符串“how are you”的地址赋给指针变量p1,不是直接将字符串“how are you”赋给指针变量p1。

上面两行:

img490

指针变量p1一旦被定义,它只能指向一个字符变量或其他字符型数据,不能同时指向多个字符型数据,更不是将“how are you”这些字符存放到p1中,也不是将字符串“how are you”赋给p1,只是将字符串“how are you”的首地址赋给p1。

下面的定义是错误的。

img491

用字符指针变量输出字符串的一般方法如下:

img492

运行结果如下:

img493

例7.12 字符串指针变量直接赋值操作。程序如下:

img494

img495

程序运行结果如下:

img496

程序中语句p1=p2;是将p2所指向的字符串"fine,thank you!"的存储地址赋给p1,使p1也指向的字符串"fine,thank you!",并不是将整个字符串"fine,thank you!"直接赋给p1。

例7.13 将字符串a复制为字符串b。

程序如下:

img497

程序运行结果如下:

img498

注意:

①在程序中使用指针变量时,必须先对其进行赋值。如果未对指针变量赋以地址值,那么该指针变量并没有具体指向某一个字符型数据,这样,有可能造成系统破坏。

②字符指针变量的值是可以改变的,但字符串的地址是不能改变的。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈