【C 语言】字符串操作 ( C 字符串 | 字符数组始化 )
2023-06-13 09:17:59 时间
文章目录
一、C 字符串
C 字符串特征 : C 语言中的字符串都是以 '\0'
字符 结尾的 字符数组 ;
C 字符串本质 : C 中 没有字符串类型 , 都是使用 字符数组 模拟字符串 ;
字符串内存分配 :
- 堆区存放字符串 : 先使用
malloc
申请内存 , 然后将字符串拷贝到内存中 ; - 栈区存放字符串 : 在栈区声明
char[]
数组 , 将字符串拷贝到数组中 ; - 全局区存放字符串 : 直接声明
"abc"
样式的 字符串常量 , 则字符串存放在了 全局区的 常量区 ;
不是所有的 字符数组 都是 字符串 , 必须是以 '\0'
字符 结尾的 字符数组 , 才算字符串 ;
下面的这种情况 , 是字符数组 , 有
个数组元素 , 由于其不是以 '\0'
字符 结尾 , 因此该 字符数组 不是字符串 ;
// 2. 初始化字符数组 , 不指定长度
// C 编译器会自动计算 字符数组 元素个数
// 注意 : 这不是字符串 , 字符串必须以 '\0' 结尾
char str2[] = {'a', 'b', 'c'};
二、字符数组始化
初始化字符数组 , 可以 指定长度 , 如下字符数组有 20 字节 , 只给前 3 个元素进行了初始化 , 第 3 ~ 19 元素 , 会自动赋值为 0 ;
char str[20] = {'a', 'b', 'c'};
注意 : 如果初始化的 字符数组 超过数组长度 , 会报错 ;
初始化字符数组 , 不指定长度 , C 编译器会自动计算 字符数组 元素个数 ;
char str2[] = {'a', 'b', 'c'};
注意 : 这不是字符串 , 字符串必须以 ‘\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;
}
执行结果 :
str = abc, str2 = abcabc
相关文章
- 全面详解c语言使用cJSON解析JSON字符[通俗易懂]
- C语言数组——字符数组
- 3. 无重复字符的最长子串
- c语言中char转换成string_字符数字转为int型
- Linux shell 执行报错 字符编码转换 iconv/dos2unix 将 gbk/gb2312 转utf8 解决方案
- c语言 通过更改ASCII码实现替换字符
- mysql修改数据库编码(数据库字符集)和表的字符编码的方法详解数据库
- Go语言字符串截取(获取字符串的某一段字符)
- Oracle常用字符换行符的使用技巧(oracle字符换行符)
- Oracle 数据库的任意字符匹配操作(oracle任意字符)
- 齐使用SQL Server实现字符补齐功能(sqlserver字符补)
- Linux字符连接:如何使用特殊字符将文本或文件连接到一起(linux 字符 连接)
- MySQL中的CNO管理数据库中的字符编码问题(mysql中cno)
- Oracle 使用下划线字符的有效性分析(oracle 下划线字符)
- PHPUTF8中文字符截断函数代码
- C#实现ComboBox自动匹配字符
- c#循环左移字符示例
- php中ltrim()、rtrim()与trim()删除字符空格实例