C语言字符指针(char*)的用法(附带实例)
在 C 语言中,可以通过两种方式访问一个字符串,一是使用字符数组,二是使用字符指针。
例如,利用字符型指针输出字符串“Hello World!”,具体代码如下:
语句“char *str="Hello World!";”等价于下面两条语句:
【实例】不使用 <string.h> 函数库中的函数,利用指针实现字符串复制功能,具体代码如下:
这里有一点需要注意,就是 str1 和 str2 的值是同步变化的,若 str1 处在 str1[1] 的位置,str2 就处在 str2[1] 的位置;若 str1 处在 str1[2] 的位置,str2 就处在 str2[2] 的位置。
例如,利用字符型指针输出字符串“Hello World!”,具体代码如下:
#include<stdio.h> int main() { char* str = "Hello World!"; printf("%s",str); return 0; }程序运行结果为:
Hello World!
程序中首先定义了字符型指针变量 str,用字符串常量“Hello World!”为其赋初值。注意,这里并不是把“Hello World!”中的所有字符存放到 str 中,只是把该字符串中第一个字符的地址赋给指针变量 str。语句“char *str="Hello World!";”等价于下面两条语句:
char *str; str="Hello World!";
【实例】不使用 <string.h> 函数库中的函数,利用指针实现字符串复制功能,具体代码如下:
#include <stdio.h> void _strcpy(char *str1, char *str2); int main() { char str1[] = "you are beautiful"; /*定义字符串 1*/ char str2[] = ""; /*定义字符串 2*/ _strcpy(str1, str2); /*调用自定义函数_strcpy */ printf("复制之后的字符串为:%s\n", str2); /*输出复制之后结果*/ return 0; } void _strcpy(char *str1, char *str2) /*用户自定义函数,用于实现字符串复制*/ { while(*str1 != '\0') /*将字符串 1 中的字符逐个复制到字符串 2 中*/ { *str2 = *str1; str1++; str2++; } *str2 = '\0'; /*在字符串 2 的末尾添加结束符 '\0' */ }程序运行结果为:
复制之后的字符串为:you are beautiful
自定义函数中,参数为两个指向字符型数据的指针变量。利用 while 循环,先将 str1 指向的内容赋给 str2 指向的元素,然后 str1 和 str2 分别加 1,指向下一个元素,直到 *str1 的值为“\0”为止。这里有一点需要注意,就是 str1 和 str2 的值是同步变化的,若 str1 处在 str1[1] 的位置,str2 就处在 str2[1] 的位置;若 str1 处在 str1[2] 的位置,str2 就处在 str2[2] 的位置。