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");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值