首页 百科知识 字符指针指向字符串如何赋值

字符指针指向字符串如何赋值

时间:2024-10-17 百科知识 版权反馈
【摘要】:C语言中,使用一个字符串常量时,C编译程序给该字符串常量分配一片连续的存储空间,并设置了一个指向该字符串的第一个字符的指针,该指针存放了字符串常量存放在内存数据区中的起始地址。对字符串常量的访问实际上是通过该字符指针进行的,因此,字符串常量具有地址特性。因此,输出指针变量就是输出指针变量当前指向的整个字符串,输出“*指针变量”就是输出指针变量当前指向的单个字符。

5.4.2 指向字符串常量的指针

C语言中,使用一个字符串常量时,C编译程序给该字符串常量分配一片连续的存储空间,并设置了一个指向该字符串的第一个字符的指针,该指针存放了字符串常量存放在内存数据区中的起始地址。对字符串常量的访问实际上是通过该字符指针进行的,因此,字符串常量具有地址特性。

例5-13 字符串常量的输出。

程序如下:

img451

程序运行结果:

  This is a string

这里将字符串赋予字符指针point,并不是将字符串存放到指针point中,而是将指向字符串的指针赋给指针变量point,即是让point指针指向字符串的首地址。

使用printf()函数输出时,%s表示输出一字符串,输出项为指针变量point。printf()函数首先输出point所指向的第一个字符,然后point自动加1。指向第二个字符并输出该字符……如此直至遇到字符结束标志'\0'为止。因此,输出指针变量就是输出指针变量当前指向的整个字符串,输出“*指针变量”就是输出指针变量当前指向的单个字符。

使用字符数组处理字符串时,由于数组的长度是固定的,若要在程序中多次使用同一数组来存放不同长度的字符串,则必须按可能的最大长度来定义数组。但当不能预知字符串长度时,定义长了则造成存储空间浪费,定义短了则可能出错。

使用指针来处理字符串就比较灵活。由于指针在程序中可以被重复赋值,而且每一次都只存储一个新字符串的首地址,而不关心这个字符串的长度。

例5-14 改写例5-13指向字符串常数的指针。

程序如下:

img452

程序运行结果:

  Theory and problems

  Theory and problems of programming

程序输出了不同长度的两个字符串。因此使用字符串指针处理字符串,不仅效率高且灵活方便。

例5-15 字符串的复制。

程序如下:

img453

img454

程序运行结果是:

  s1=This is a string

  s2=This is a string

常见的编程错误5.6

img455 字符数组中没有足够的空间来存储终止字符串的结束标志(空字符)。

img456 创建或使用一个不包含结束标志(空字符)的字符串。

常见的编程错误5.7

img457 在函数调用中,需要字符参数时,却将字符串作为参数传递给函数。

img458 将单个字符作为char*字符串处理,会导致运行错误。

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

我要反馈