C学习-基础:字符串的指针变量
指向字符串的指针变量
字符串的表示形式
字符串是特殊的常量,它一般被存储在一维的字符数组中,并以‘\0’结束。字符串与指针也有着密切关系。
对字符串的访问方法
1、采用字符数组:将字符串存放在字符数组中,以空字符’\0’结束;
#include <stdio.h> int main(int argc, char const *argv[]) { int waitag; char string[] = "Beijing Olympics"; int i; for (i = 0; string[i] != '\0'; i++) // 通过下标逐个输出字符数组中的所有数组元素 printf("%c", string[i]); printf("\n"); printf("% s\n", string); // 从数组名 string 指向的元素开始,输出字符串到‘\0’为止 scanf("%d", &waitag); return 0; }
结果
Beijing Olympics Beijing Olympics
C语言中规定,数组名代表数组的首地址,即数组第0号数组元素的地址(或指针),所以将字符串存储到一个数组中后,就可以通过该数组名对它进行存取。
由于string+i是一个地址,则*(string+i)表示其内容,它与数组元素string[i]等价。
2、采用 字符指针
#include <stdio.h> int main(int argc, char const *argv[]) { int waitag; char *string = "Beijing Olympics"; printf("%s\n", string); // 通过 指针变量名 输出字符串 scanf("%d", &waitag); return 0; }
结果
Beijing Olympics
注意,在对字符指针变量string赋初值时,并不是把整个字符串的内容都赋给该字符指针变量,而是把该字符串在内存单元的首地址赋给该字符指针变量,这样就可将字符指针指向字符串的第一个字符。
在C语言中,对字符串常量的存放是按静态字符数组处理的,即在内存中给字符数组分配一片连续的存储单元,用来存放该字符串常量,每个字符占用一个字节。
在内存中,由于字符串最后被自动加了一个‘\0’,所以使用字符指针变量来处理字符串时就很容易判断字符串的终止位置。由此,使用字符数组名或字符指针变量可以整体输出一个字符串。
若使用字符指针变量处理字符串,输出时要使用“%s”格式符,输出项中要给出字符指针变量名。先输出字符指针变量所指向字符串的第一个字符,然后字符指针变量自动加1,指向下一个字符并输出该字符,…,重复上述操作,直到遇到 ‘\0’为止。
字符指针变量 与 字符数组 的对比
使用字符数组和字符指针变量都可以实现字符串的存储和运算,两种方式既有相同之处,也有区别。详见下表。
字符串作函数参数
使用地址传递的方法(即用字符数组名作函数参数或者用指向字符串的指针变量作函数参数),可以将一个字符串从一个函数传递到另一个函数。
共 0 条评论