C語言學習之:指標與字串
1. 字串的定義
-
使用指標和陣列兩種方式定義字串
#include<stdio.h> void main() { char string[] = "i love china!"; char* string_ = "i love china!"; printf("%s\n", string); printf("%s", string_); }
-
從彙編的角度來看這兩種定義方式的區別
- 使用指標來定義字串效率更高
- 指標定義的字串在記憶體中開闢的空間位於 常量儲存區,不能被改變和重寫
- 陣列定義的字串在記憶體中開闢的空間位於自由儲存區,可以被改變和重寫
2. 兩種定義方式的區別
-
我們都知道,多快好省的東西只是理想的,因此字串的定義也是一樣,指標的方式很簡單,但是它存在一個問題,就是其空間直接被分配在記憶體的常量區,因此用指標定義的字串是不可以被重寫的。我們看下面的例子:
- 【用陣列定義的字串】
【用指標定義的字串】
- 【用陣列定義的字串】
-
驗證了結論即:陣列定義的字串,其中的內容都可以被修改,但是使用指標定義的字串其整體被看做一個常量,其中的每一個字元不可以被單獨修改。
-
更加簡單的寫法:
#include<stdio.h> void reWriteArray(char*raw_array,char*rewritted_array) { printf("未更改之前的字串是:%s\n", rewritted_array); char* p=rewritted_array; while ((*rewritted_array++ = *raw_array++)!='\0') { ; } printf("更改過後的字串是:%s", p); } void main() { char* string = "i am a teacher"; char* string1 = "she is a teacher"; char string2[] = "she is a teacher"; reWriteArray(string, string2); }
3. 題外話 – python 的字串比較
- python 中的字串中的內容也是不可修改的,大家有興趣可以將 C 語言中的一些現象和 python 以及其他語言進行比較,很有趣
相關文章
- C語言指標學習C語言指標
- C語言知識彙總 | 51-C語言字串指標(指向字串的指標)C語言字串指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- C語言之字串與指標C語言字串指標
- C語言學習歷程(十二)陣列指標與指標陣列C語言陣列指標
- C語言學習筆記:結構體與指標C語言筆記結構體指標
- go 語言指標學習Go指標
- C語言 指標與陣列C語言指標陣列
- C語言 C語言野指標C語言指標
- C語言(指標)C語言指標
- C語言指標C語言指標
- C語言系列之 指標與陣列總複習視訊教程C語言指標陣列
- c指標之字串常量指標字串
- 浙江大學 PTA C語言-實驗8.2 指標與字串 7-2 字串排序C語言指標字串排序
- C語言-指標操作C語言指標
- C語言學習筆記之指標的運算C語言筆記指標
- C語言指標部分教學總結C語言指標
- C語言:利用指標檢查字串是否是迴文C語言指標字串
- 物聯網學習教程—字串與指標字串指標
- C語言指標(二) 指標變數 ----by xhxhC語言指標變數
- c語言指標彙總C語言指標
- c語言指標詳解C語言指標
- C語言指標筆記C語言指標筆記
- C語言基礎-指標C語言指標
- C語言 函式指標C語言函式指標
- C語言雜談:指標與陣列 (上)C語言指標陣列
- C語言雜談:指標與陣列 (下)C語言指標陣列
- C語言雜談:指標與陣列(下)C語言指標陣列
- C語言系列之 指標強化與應用視訊教程C語言指標
- C語言:指標,C的靈魂C語言指標
- C語言指標安全及指標使用問題C語言指標
- C++語言程式設計筆記 - 第6章 - 陣列、指標與字串C++程式設計筆記陣列指標字串
- C語言核心之陣列和指標詳解C語言陣列指標
- 搞清楚C語言指標C語言指標
- C語言指標基本知識C語言指標
- C語言指標詳解(一)C語言指標
- C語言指標詳解(二)C語言指標
- C語言指標用法大全C語言指標