前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【C 语言】字符串操作 ( C 字符串 | 字符数组始化 )

【C 语言】字符串操作 ( C 字符串 | 字符数组始化 )

作者头像
韩曙亮
发布2023-03-29 21:20:30
发布2023-03-29 21:20:30
5.1K00
代码可运行
举报
运行总次数:0
代码可运行

文章目录

一、C 字符串


C 字符串特征 : C 语言中的字符串都是以 '\0'字符 结尾的 字符数组 ;

C 字符串本质 : C 中 没有字符串类型 , 都是使用 字符数组 模拟字符串 ;

字符串内存分配 :

  • 堆区存放字符串 : 先使用 malloc 申请内存 , 然后将字符串拷贝到内存中 ;
  • 栈区存放字符串 : 在栈区声明 char[] 数组 , 将字符串拷贝到数组中 ;
  • 全局区存放字符串 : 直接声明 "abc" 样式的 字符串常量 , 则字符串存放在了 全局区的 常量区 ;

不是所有的 字符数组 都是 字符串 , 必须是以 '\0' 字符 结尾的 字符数组 , 才算字符串 ;

下面的这种情况 , 是字符数组 , 有

3

个数组元素 , 由于其不是以 '\0' 字符 结尾 , 因此该 字符数组 不是字符串 ;

代码语言:javascript
代码运行次数:0
运行
复制
    // 2. 初始化字符数组 , 不指定长度
    // C 编译器会自动计算 字符数组 元素个数
    // 注意 : 这不是字符串 , 字符串必须以 '\0' 结尾
    char str2[] = {'a', 'b', 'c'};

二、字符数组始化


初始化字符数组 , 可以 指定长度 , 如下字符数组有 20 字节 , 只给前 3 个元素进行了初始化 , 第 3 ~ 19 元素 , 会自动赋值为 0 ;

代码语言:javascript
代码运行次数:0
运行
复制
char str[20] = {'a', 'b', 'c'};

注意 : 如果初始化的 字符数组 超过数组长度 , 会报错 ;

初始化字符数组 , 不指定长度 , C 编译器会自动计算 字符数组 元素个数 ;

代码语言:javascript
代码运行次数:0
运行
复制
char str2[] = {'a', 'b', 'c'};

注意 : 这不是字符串 , 字符串必须以 ‘\0’ 结尾

代码示例 :

代码语言:javascript
代码运行次数:0
运行
复制
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

/*
 * 函数入口
 */
int main(int argc, char **args)
{
    // 1. 初始化字符数组 , 指定长度
    // 字符数组有 20 字节 , 只给前 3 个元素进行了初始化
    // 第 3 ~ 19 元素 , 会自动赋值为 0
    char str[20] = {'a', 'b', 'c'};

    // 如果指定长度初始化字符数组 , 如果初始化数组中个数大于字符数组长度
    // 编译会直接报错
    //char str1[2] = {'a', 'b', 'c', '\0'}; // 错误示例

    // 2. 初始化字符数组 , 不指定长度
    // C 编译器会自动计算 字符数组 元素个数
    // 注意 : 这不是字符串 , 字符串必须以 '\0' 结尾
    char str2[] = {'a', 'b', 'c'};

    // 打印上述 字符串
    printf("str = %s, str2 = %s\n", str, str2);

    system("pause");
    return 0;
}

执行结果 :

代码语言:javascript
代码运行次数:0
运行
复制
str = abc, str2 = abcabc
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、C 字符串
  • 二、字符数组始化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档