首页 > 编程笔记 > C语言笔记 阅读:11

C语言字符指针(char*)的用法(附带实例)

在 C 语言中,可以通过两种方式访问一个字符串,一是使用字符数组,二是使用字符指针。

例如,利用字符型指针输出字符串“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] 的位置。

相关文章