日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言内存/指针相关

發布時間:2023/12/2 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言内存/指针相关 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內存

數據類型–更好的內存管理
數據類型:固定大小內存的別名

typedef

  • 結構體的別名 typedef struct Student MyStudent

  • 給指針起別名 typedef char * PCHAR

  • 給變量起別名 typedef longlong mylong_t

  • 注意:

    • void類型不能typedef

    • void只能對函數返回和參數的限定

    • void* 可以指向任何類型的數據(不需要強制轉換)

    • 定義一個變量,編譯器必須知道分配多少內存

    sizeof

    • 返回的是為這個變量開辟的大小

    • 返回數據類型是unsigned int

    • sizeof計算數組

    內存區

    內存分區備注

    命令行參數

    env,args

    棧 ↓

    高地址向低地址

    共享庫


    堆 ↑

    低地址向高地址

    未初始化數據段

    .bss

    初始化數據段

    .data

    代碼段(靜態庫)

    .text

    受保護頭

    (void*)0

    int a ; // 外部鏈接
    static int a; // 內部鏈接
    "helloworld" //常量區
    const修飾的全局變量 // 常量區 一旦初始化 不能修改

    程序運行后:

    • 堆區 // 手動開辟 手動釋放,程序員不釋放,在程序結束,操作系統會釋放

    • 棧區 編譯器自動分配、釋放

    • 全局靜態區(全局變量和靜態變量是放在一起的,初始化和未初始化會分開存放)

    • 全局區 全局變量(未初始化會成0)

    • 靜態區

    • 常量區 不能修改,程序結束由操作系統釋放?const char * p = "helloworld"

    靜態

    • 全局靜態變量和局部靜態變量都存儲在靜態區 都在運行期間合法有效

    • static是內部鏈接

    編譯

    • 頭文件不參與編譯,每一個.c是編譯單元

    • 編譯器獨立編譯每一個.c文件

    • 頭文件只放聲明,不能放定義

    extern

    • 不寫默認是外連接的(extern)

    • 表示 符號是存在的,先編譯通過,讓鏈接器找符號在哪

    const

    • const 全局變量 在常量區 直接間接都不能修改

    • const 局部變量,在棧上,可以間接修改

    volatile

    阻止編譯器對變量進行優化,每次重新從內存(變量的地址)中獲取值

    聲明:

    本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。

    總結

    以上是生活随笔為你收集整理的C语言内存/指针相关的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。