網站首頁 編程語言 正文
一、字符串的概念
字符串是有序字符的集合
字符串是程序中的基本元素之一
C 語言中沒有字符串的概念
- C 語言中通過特殊的字符數組模擬字符串
- C 語言中的字符串是以 ‘\0’ 結尾的字符數組
二、字符數組與字符串
在C語言中,雙引號引用的單個或多個字符是—種特殊的字面量
- 存儲于程序的全局只讀存諸區
- 本質為字符數組,編譯器自動在結尾加上 ‘\0' 字符
下面看一段字符數組與字符串的代碼:
#include <stdio.h>
int main()
{
char ca[] = {'H', 'e', 'l', 'l', 'o'};
char sa[] = {'W', 'o', 'r', 'l', 'd', '\0'};
char ss[] = "Hello world!";
char* str = "Hello world!";
printf("%s\n", ca);
printf("%s\n", sa);
printf("%s\n", ss);
printf("%s\n", str);
return 0;
}
輸出結果如下:
因為 ca[ ] 是字符數組而不是字符串,%s 這個格式化字符表示所需要打印的就是字符串,所以打印 ca 自然就會不對。
三、字符串字面量的秘密
- 字符串字面量的本質是一個數組
- 字符串字面量可以看作常量指針
- 字符串字面量中的字符不可改變
- 字符串字面量至少包含一個字符
"Hello World !”是一個無名的字符數組
下面看一個字符串字面量的代碼:
#include <stdio.h>
int main()
{
char b = "abc"[0];
char c = *("123" + 1);
char t = *"";
printf("%c\n", b);
printf("%c\n", c);
printf("%d\n", t);
printf("%s\n", "Hello");
printf("%p\n", "World");
return 0;
}
輸出結果如下:
注意char t = *" "; 里面包含了一個 '\0'
四、字符串的長度
- 字符串的長度就是字符串所包含字符的個數
- 字符串長度指的是第一個 ‘\0’ 字符前出現的字符個數
- 通過 '\0' 結束符來確定字符串的長度
- 函數 strlen 用于返回字符串的長度
下面看一段 strlen 的使用:
#include <stdio.h>
#include <string.h>
int main()
{
char s[] = "Hello\0world";
int i = 0;
for(i=0; i<sizeof(s)/sizeof(char); i++)
{
printf("%c\n", s[i]);
}
printf("%s\n", s);
printf( "%d\n", strlen(s) );
printf( "%d\n", strlen("123") );
return 0;
}
輸出結果如下:
s 代表字符串的話代表的就是 Hello,s 如果代表字符數組的話代表的就是 Hello\0world\0
五、小結
- C 語言中通過字符數組模擬字符串
- C 語言中的字符串使用 ‘\0’ 作為結束符
- 字符串字面量的本質為字符數組
- 字符串相關函數都依賴于結束符 ‘\0'
原文鏈接:https://blog.csdn.net/weixin_43129713/article/details/123718889
相關推薦
- 2023-04-27 react中關于函數調用()與bind?this的原因及分析_React
- 2022-06-12 C語言?深入探究動態規劃之區間DP_C 語言
- 2022-08-12 Go?內聯優化讓程序員愛不釋手_Golang
- 2022-07-11 搭建spring MVC框架,完成和servlet相似的操作
- 2022-08-31 C++中關于this指針的入門介紹_C 語言
- 2022-07-20 spring boot 配置文件
- 2022-05-13 在 Dart 中更好地使用類和 Mixin
- 2022-12-21 Docker教程之dockerfile構建centos鏡像_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支