• C/C++字符串和数组基本操作demo


    #include "stdio.h"
    #include "stdlib.h"
    #include "string.h"
    
    // C语言没有字符串类型
    // C语言通过字符数组来模拟字符串
    // C风格字符串是以零结尾的字符串 '\0'
    void main01() {
    
        // 字符数组初始化
        // 指定长度 
        char buf1[128] = {'a', 'o', 'e'};  // 剩余的部分补充为0
        printf("%s\n", buf1); // 结果: aoe
    
        // 不指定具体长度
        char buf2[] = { 'a', 'o', 'e' };
        printf("sizeof(buf2):%d, buf2 is %s\n", sizeof(buf2), buf2);
        /*
        * 结果:sizeof(buf2):3, buf2 is aoe烫烫烫烫蘟oe
        * buf2 is aoe烫烫烫烫蘟oe 原因是:从buf2地址开始打印,直到遇到0结束。
        */
    
        char buf3[] = { 'a', 'o', 'e', '\0'};
        printf("sizeof(buf3):%d, buf3 is %s\n", sizeof(buf3), buf3);
        /*
        * 结果:sizeof(buf3):4, buf3 is aoe
        */
    
        // 通过字符串初始化字符数组
        char buf4[] = "aoe";  // 字符串默认零结尾
        printf("sizeof(buf4):%d, buf4 is %s\n", sizeof(buf4), buf4);
        printf("sizeof(\"aoe\"):%d, %s\n", sizeof("aoe"), "aoe");
        /*
        * 结果:
        * sizeof(buf4):4, buf4 is aoe
        * sizeof("aoe"):4, aoe
        */
    
        system("pause");
    }
    
    void main02() {
    
        // 通过字符串初始化字符数组
        char buf4[] = "aoe";  // 字符串默认零结尾
        printf("sizeof(buf4):%d\n", sizeof(buf4)); // 注意sizeof是对数组类型进行内存大小测量,包括 '\0'
        printf("strlen(buf4):%d\n", strlen(buf4)); // strlen是求字符串的长度,不包括\0
        /*
        * 结果:
        * sizeof(buf4):4
        * strlen(buf4):3
        */
    
        system("pause");
    }
    
    // 操作数组的方法:
    // 下标方式法和指针方式法
    void main() {
    
        char buf[] = "aoe"; // 在stack栈区分配4*sizeof(char),并初始化为:'a','o','e','\0'
        for (int i = 0; i < strlen(buf); i++) {
            printf("%c", buf[i]); // 下标方式法
        }
    
        char* ptr = NULL;
        ptr = buf;
        for (int i = 0; i < strlen(buf); i++) {
            printf("%c", *(ptr+i)); // 指针方式法
        }
    
        // []中括号 *星号的本质到底是什么?
        // *ptr 是程序员手工操作。(显示操作)
        // [] 是C++编译器帮程序员做了一个*ptr的操作。(隐式操作)
        // C++编译器:最终把buf[i] -转换为-> *(buf + i)
        // buf[i] --> *(buf + i)
        system("pause");
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
  • 相关阅读:
    PROBIS铂思金融破产后续:ASIC牌照已注销
    PyTorch :YOLOv5实战
    ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索
    烽火HG680-MC_TTL免费升级固件及教程
    读取resources 目录资源文件的方法
    Android C++系列:C++最佳实践2抽象类
    人工智能中的学习方法详解
    剑指 Offer II 105. 岛屿的最大面积
    LeetCode 0485. 最大连续 1 的个数
    剑指 Offer II 114+115+116+117+LC827
  • 原文地址:https://blog.csdn.net/luoqingyan/article/details/126319099