亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Linux C語言指針與內存

難度初級
時長 2小時 5分
學習人數
綜合評分9.60
263人評價 查看評價
9.9 內容實用
9.5 簡潔易懂
9.4 邏輯清晰
  • 使用調試功能 gcc -g

    gdb ---> 斷點調試,單點調試

    gcc -g 文件名.c -o 文件名.out ---> 使用gdb編譯

    gbd ./文件名 ---> 開始執行db調試

    l:(list)列出源碼

    回車繼續執行剛剛的命令

    start ---> 開始執行

    break n ---> 截取第n行斷點

    print或p a ---> 打印輸出變量a

    n ---> 跳到下一行繼續執行

    s ? ---> step 跳入函數

    bt ---> 查看函數堆棧

    f ---> 切換函數堆

    f 1 ---> 跳轉到函數1

    q ---> 退出調試



    查看全部
    1 采集 收起 來源:指針運算

    2019-11-15

  • 32位bit:內存編號只能編到32個二進制位

    操作系統:管理內存,編號,規劃。

    用戶內存隔離開的好處:

    1. 操作系統的內存不會被大量占用

    2. 避免機器卡住/卡死/死機等狀態

    3. 可通過操作系統把應用關閉

    4. 使得操作系統更安全


    查看全部
    0 采集 收起 來源:內存管理

    2019-11-12

  • 棧:先進后出,后進先出。由高地址向低地址放入,先放入的后出,后放入的先出。

    先放入的分配的內存大于后放入的。

    字節順序是指占內存多于一個字節類型的數據在內存中的存放順序,通常有小端、大端兩種字節順序。小端字節序指低字節數據存放在內存低地址處(由右向左),高字節數據存放在內存高地址處;大端字節序是高字節數據存放在低地址處,低字節數據存放在高地址處(由左向右)。

    示例中的Linux棧內用的就是小端存儲(as高字節存放高地址,由上到下)。


    查看全部
  • 變量只是一個名稱,來表示一個內存的地址的簡稱,(變量就是內存)

    而指針則是將變量(對于我們)與地址本質的轉化,

    更利于理解。


    http://img1.sycdn.imooc.com//5dcaab170001979802990765.jpg

    堆棧段:

      1. 為函數內部的局部變量提供存儲空間。

      2. 進行函數調用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區。如計算一個很長的算術表達式時,可以將部分計算結果壓入堆棧。

    數據段(靜態存儲區):

      包括BSS段(Block Started by Symbol)的數據段。BSS段存儲未初始化或初始化為0的全局變量、靜態變量,具體體現為一個占位符,并不給該段的數據分配空間,只是記錄數據所需空間的大小。數據段存儲經過初始化的全局和靜態變量。



    查看全部
  • 變量只是一個名稱,來表示一個內存的地址的簡稱,(變量就是內存)

    而指針則是將變量(對于我們)與地址本質的轉化,

    更利于理解。

    形象比喻:內存是一個酒店,每個變量就是房間的門牌,通過指針對門牌來找到地址,從而取得里面的東西。

    http://img1.sycdn.imooc.com//5dcaab170001979802990765.jpg

    堆棧段:

      1. 為函數內部的局部變量提供存儲空間。

      2. 進行函數調用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區。如計算一個很長的算術表達式時,可以將部分計算結果壓入堆棧。

    數據段(靜態存儲區):

      包括BSS段(Block Started by Symbol)的數據段。BSS段存儲未初始化或初始化為0的全局變量、靜態變量,具體體現為一個占位符,并不給該段的數據分配空間,只是記錄數據所需空間的大小。數據段存儲經過初始化的全局和靜態變量。



    查看全部
  • 變量只是一個名稱,來表示一個內存的地址的簡稱,(變量就是內存)

    而指針則是將變量(對于我們)與地址本質的轉化,

    更利于理解。

    形象比喻:內存是一個酒店,每個變量就是房間的門牌,通過指針對門牌來找到地址,從而取得里面的東西。

    堆棧段:https://img1.sycdn.imooc.com/5d17520a0001979802990765.jpg

      1. 為函數內部的局部變量提供存儲空間。

      2. 進行函數調用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區。如計算一個很長的算術表達式時,可以將部分計算結果壓入堆棧。

    數據段(靜態存儲區):

      包括BSS段(Block Started by Symbol)的數據段。BSS段存儲未初始化或初始化為0的全局變量、靜態變量,具體體現為一個占位符,并不給該段的數據分配空間,只是記錄數據所需空間的大小。數據段存儲經過初始化的全局和靜態變量。


    查看全部
  • 變量只是一個名稱,來表示一個內存的地址的簡稱,(變量就是內存)

    而指針則是將變量(對于我們)與地址本質的轉化,

    更利于理解。

    形象比喻:內存是一個酒店,每個變量就是房間的門牌,通過指針對門牌來找到地址,從而取得里面的東西。

    堆棧段:https://img1.sycdn.imooc.com/5d17520a0001979802990765.jpg

      1. 為函數內部的局部變量提供存儲空間。

      2. 進行函數調用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區。如計算一個很長的算術表達式時,可以將部分計算結果壓入堆棧。

    數據段(靜態存儲區):

      包括BSS段(Block Started by Symbol)的數據段。BSS段存儲未初始化或初始化為0的全局變量、靜態變量,具體體現為一個占位符,并不給該段的數據分配空間,只是記錄數據所需空間的大小。數據段存儲經過初始化的全局和靜態變量。


    查看全部
  • 變量只是一個名稱,來表示一個內存的地址的簡稱,(變量就是內存)

    而指針則是將變量(對于我們)與地址本質的轉化,

    更利于理解。

    形象比喻:內存是一個酒店,每個變量就是房間的門牌,通過指針對門牌來找到地址,從而取得里面的東西。

    堆棧段:https://img1.sycdn.imooc.com/5d17520a0001979802990765.jpg

      1. 為函數內部的局部變量提供存儲空間。

      2. 進行函數調用時,存儲“過程活動記錄”。

      3. 用作暫時存儲區。如計算一個很長的算術表達式時,可以將部分計算結果壓入堆棧。

    數據段(靜態存儲區):

      包括BSS段(Block Started by Symbol)的數據段。BSS段存儲未初始化或初始化為0的全局變量、靜態變量,具體體現為一個占位符,并不給該段的數據分配空間,只是記錄數據所需空間的大小。數據段存儲經過初始化的全局和靜態變量。


    查看全部
  • *p;指針指向的變量值

    ?&p;指針自己所在的地址

    標準的C語言中,不允許直接對內存地址進行操作,只能是對操作系統已經分配給的內存空間進行操作。(防止用戶自己操作內存地址時侵吞系統內存或者其他程序的內存)

    指針保存的是什么?指針保存的就是內存的地址


    查看全部
    1. 計算機是由邏輯電路元件來組成的

    2. 計算用二進制

    3. 顯示為十進制

    4. 編程用十六進制

    5. 內存中最小的單位是字節 1Byte=8bit

    6. 一個十六進制的數字,就可以表示4位二進制數字

    查看全部
  • 使用調試功能 gcc -g

    gdb ---> 斷點調試,單點調試

    gcc -g 文件名.c -o 文件名.out ---> 使用gdb編譯

    gbd ./文件名 ---> 開始執行db調試

    l:(list)列出源碼

    回車繼續執行剛剛的命令

    start ---> 開始執行

    break n ---> 截取第n行斷點

    print或p a ---> 打印輸出變量a

    n ---> 跳到下一行繼續執行

    s ? ---> step 跳入函數

    bt ---> 查看函數堆棧

    f ---> 切換函數堆

    f 1 ---> 跳轉到函數1

    q ---> 退出調試


    查看全部
    0 采集 收起 來源:gdb工具的使用

    2019-11-12

  • void change(int *a,int b) ?其中a為指針參數,*+任意參數或者變量均為指針參數或者變量 ?在調用該函數時需要在參數前+& 即: ?change(&a,&b);

    變量前加*號表示加入指針。 在main函數中引用指針時是變量前加&號

    int *a=&b; a是指針,把b的地址賦給a,a指向b

    &表示取地址符

    指針變量不賦初值會出錯,temp


    查看全部
  • 因為cpu的地址總線是32位,也就是尋址空間是32位,如果把內存地址比作一戶人家的門牌號,那么32位的尋址空間可以給2^32戶人家分配門牌號,而計算機中一個內存單位為1個字節,故而32位的操作系統只能使用2^32=(2^10)* (2^10)* (2^10)*( 2^2)=4G字節的內存,這樣說應該很清晰了

    查看全部
    0 采集 收起 來源:內存管理

    2019-11-12

  • void change(int *a,int b) ?其中a為指針參數,*+任意參數或者變量均為指針參數或者變量 ?在調用該函數時需要在參數前+& 即: ?change(&a,&b);

    變量前加*號表示加入指針。 在main函數中引用指針時是變量前加&號

    int *a=&b; a是指針,把b的地址賦給a,a指向b

    &取地址符

    指針變量不賦初值會出錯,temp


    查看全部
  • gdb 斷點調試,單點調試

    gcc -g? 文件名.out -o? ?文件名 .out 使用gdb編譯

    gbd ./文件名.out? 執行

    (gdb) l? 或list? 顯示源代碼

    l:(list)列出源碼

    回車繼續執行剛剛的命令

    start開始執行

    break n ---> 截取第n行斷點

    print或p a 打印輸出a

    n 跳到下一行

    s 進入函數

    bt 查看函數堆棧

    f 切換

    f 1 跳轉到函數1

    q 退出調試



    查看全部
    1 采集 收起 來源:gdb工具的使用

    2019-11-12

  • 1?指針?數組?字符串

    2?堆內存?棧內存

    3?GDB? 調試工具


    查看全部
  • 自由可分配內存

    查看全部
    0 采集 收起 來源:內存管理

    2019-11-06

  • 用戶內存隔離開的好處

    查看全部
    0 采集 收起 來源:內存管理

    2019-11-06

  • 一個內存的最小存儲單位1個字節

    查看全部
    0 采集 收起 來源:內存管理

    2019-11-06

舉報

0/150
提交
取消
課程須知
本課程是C語言中級課程,為了更好的學習效果: 1、需要有一定的C語言基礎,如果沒有基礎的同學可以看《C語言入門》這門課。 2、本課程是在Linux環境下講解,需要熟悉一些Linux命令。如果不了解的話可以在《Linux C語言編程基本原理與實踐》這門課程中補充
老師告訴你能學到什么?
1、C語言中的指針是怎么回事 2、Linux下gdb調試工具是怎樣使用的 3、指針與內存有著怎樣的關系 4、數組與字符串之間的聯系

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!