亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

char *str1 和 char str2[]的詳解

發布時間:2020-07-03 12:34:34 來源:網絡 閱讀:1322 作者:匯天下豪杰 欄目:編程語言

C語言的一個知識點:

  char *str1 = "hello world" 和 char str2[] = "hello world"; 的區別:

1、內存管理:

         char *str1 和 char str2[]的詳解

  內存分為了:只讀代碼段,只讀數據段,BSS,堆,棧五個不同區域。

  如上圖所示: 只讀代碼段一般存放的是編寫好的程序。

  只讀數據段放的是常量(字符串常量,數組名稱,函數名稱),只讀區域不能更改!

  BSS區域存放的是全局變量和static靜態類變量,又分為未初始化,值都為0,和已初始化區域。

  堆中存放的是malloc(),calloc()……申請的空間,不由操作系統回收,必須靠程序員自己通過free()回收空間,不然就是內存泄漏!!!

  棧中存放的是局部變量,形參變量,棧中空間可被任何函數使用,是數據的可靠性很低!


2、str1是指針變量,str1++; right,指針加減整型,結果還是指針。

  對于str2而言,char str2[] = "hello world"; <=> char str2[] = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'}; 

  這是對字符數組初始化,所以str2是數組名稱(指針常量),str2++;false,常量不能賦值!

  "hello world"字符串本身就是以0結尾的字符數組!!!      

3、"hello world"字符串常量在只讀數據段,值本身內容不能被更改!!!

  str1為指針變量,*str1 = 't'; false,更改的是只讀數據段中的區域。

  str2為數組名稱,其空間在棧中申請,*str2 = 't'; true,棧中的數據可以被更改。

4、對char *str1 = "hello world"的深刻理解

  strlen(str1);        11

  strlen(str2);        11

  sizeof(str2);        12   數組名稱,求字節數,是數組所申請的空間的字節數,在上0結束標志。   

  sizeof(str1);        4/8  與平臺有關,32位系統下,指針4字節,64位,指針8字節 

  sizeof(*str1);       1    *str1 就是'h',占用一個字節。

  sizeof("hello world");   12   字符串常量所占空間

  strlen();函數,求得是字符串長度,不算那個0;sizeof();關鍵字,單目運算符,求字節數,算字符串的結束標志0。

5、[]中的值,由初值個數決定。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

r1 st
AI

屏南县| 井研县| 固始县| 祁东县| 论坛| 靖远县| 广宗县| 积石山| 岳普湖县| 金塔县| 南昌市| 若羌县| 岳阳市| 富锦市| 淅川县| 区。| 永和县| 闽侯县| 米林县| 收藏| 黑龙江省| 林州市| 思南县| 泸州市| 安泽县| 灵丘县| 达尔| 黄平县| 巫溪县| 浏阳市| 舒城县| 梨树县| 焉耆| 峨边| 平顶山市| 海宁市| 石嘴山市| 始兴县| 西和县| 北宁市| 赫章县|