• 2022/11/24 [指针] 通过指针引用字符串


    在c程序中,字符串是存储在字符数组中的,想引用一个字符数组,有以下两种办法:

    (1)用字符数组存放一个字符串,可以通过数组名和下标引用字符串中一个字符,也可以通过数组名和格式声明“%s”输出该字符串。

    程序:定义一个字符数组,输入该字符串和第8个字符

    1. #include
    2. int main()
    3. {
    4. char a[] = "I love China!";
    5. printf("%s\n", a);
    6. printf("%c\n", a[7]);//第八个字符位a[7]
    7. return 0;
    8. }

    a[7]实际上就是*(a+7),a+7是一个地址,指向字符‘c'

    (2)用字符指针变量指向一个字符串常量,通过字符指针变量引用字符串常量。

    程序:通过字符指针输出字符串

    1. #include
    2. int main()
    3. {
    4. char* string;
    5. string = "I love China!";
    6. printf("%s", string);
    7. return 0;
    8. }

    C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放该字符串常量,但是这个字符数组是没有名字的.因此不能通过数组名来引用,只能通过指针变量来引用。

    对字符指针变量string初始化,实际上是把字符串第1个元素的地址(即存放字符串的字符数组的首元素地址)赋给指针变量string,使string指向字符串的第1个字符.

    说明:有人误认为string是一个字符串变量,以为在定义时把"I love China!"这几个字符赋给该字符串变量,这是不对的。在C语言中只有字符变量,没有字符串变量。

    实际上,char* string="hello“分为:char* string;string=”hello“;把字符串的第一个元素的地址赋给string,注意:string被定义为一个指针变量,基类型为字符型。请注意它只能指向一个字符类型数据,而不能同时指向多个字符数据,更不是把"hello"这些字符存放到string 中(指针变量只能存放地址),也不是把字符串赋给* string。只是把"hello"的第1个字符的地址赋给指针变量string。

    先可以通过字符指针变量来输出它所指向的字符串,如printf("%s",string),%s是输出字符串时所用的格式符,在输出项中给出字符指针变量名string,则系统会输出string所指向的字符串第1个字符,然后自动使string加1,使之指向下一个字符,再输出该字符……如此直到遇到字符串结束标志’\0'为止

    对于字符的存取,可以采用下标的方式或指针的方式:

     

  • 相关阅读:
    HTTPS应该搞懂了吧。
    kubernetes(K8S)学习笔记P5:K8s核心概念2
    算法-26. 删除有序数组中的重复项-⭐
    linux--系统文件I/O
    win10蓝屏0xc000021a怎么修复?
    JVM源码剖析之线程的创建过程
    SpringCloud Eureka搭建会员中心服务提供方-集群
    Paddlepaddle使用自己的VOC数据集训练目标检测(0废话简易教程)
    stm32f407探索者开发板(一)——资源介绍(顺便说下无人机的进度状况)
    0817(033天 线程/进程04 线程安全)
  • 原文地址:https://blog.csdn.net/fangzelin5/article/details/128025268