C相關問題

2021-10-12 15:29:03 字數 1072 閱讀 8386

棧 — 區域性變數 — 向低位址生長— 自動釋放

堆 — 手動分配,釋放 — 向高位址生長

static 靜態變數,全域性變數只作用此程式頁,其他頁定義相同變數不影響,靜態函式同理,不可extern 宣告,區域性變數函式內修飾變數存於全域性資料區,值保持不變,不賦值也初始化為0,作用域還是在函式內,static修飾的全域性變數不能給檔案呼叫——這也是靜態變數和全域性變數的區別。

const 常量字串,可讀不可寫,與51特定關鍵字code相似。

棧(資料結構):一種先進後出的資料結構。

棧(作業系統):由作業系統(編譯器)自動分配釋放 ,存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。

堆(資料結構):堆可以被看成是一棵樹,如:堆排序。

堆(作業系統): 一般由程式設計師分配釋放, 若程式設計師不釋放,程式結束時可能由os**,分配方式倒是類似於鍊錶。

#define 定義乙個預處理巨集

#undef 取消巨集的定義

#if 編譯預處理中的條件命令,相當於c語法中的if語句

#ifdef 判斷某個巨集是否被定義,若已定義,執行隨後的語句

#ifndef 與#ifdef相反,判斷某個巨集是否未被定義

#elif 若#if, #ifdef, #ifndef或前面的#elif條件不滿足,則執行#elif之後的語句,相當於c語法中的else-if

#else 與#if, #ifdef, #ifndef對應, 若這些條件不滿足,則執行#else之後的語句,相當於c語法中的else

#endif #if, #ifdef, #ifndef這些條件命令的結束標誌.

defined  與#if, #elif配合使用,判斷某個巨集是否被定義

defined用來測試某個巨集是否被定義。defined(name): 若巨集被定義,則返回1,否則返回0。如#if defined(vax)。

#include <> :到儲存系統標準標頭檔案的位置查詢標頭檔案。

#include" ":查詢當前目錄是否有指定名稱的標頭檔案,然後再從標準頭檔案目錄中查詢。

乙個定義為volatile的變數是說這變數可能會被意想不到地改變

idata區一般比xdata速度快些

C 指標相關問題

b int 表示指向指標的指標 int m 1 int p m int a p c 陣列指標和指標陣列 指標陣列 int int a 3 array of pointers,陣列指標 int int a 3 a pointer to an arraya 定義乙個一維陣列,陣列名是這個陣列的首位址 b...

C 多重繼承相關問題

分類 c 2012 02 10 18 03 2758人閱讀收藏 舉報c 編譯器symbian class caccess 多重繼承的問題,首先想到多繼承建構函式如何處理?symbian下是可以乙個c類多個m類多重繼承的 c 中的多繼承,建構函式處理並沒有問題,物件構造的時候按照繼承中宣告的順序呼叫多...

C資料型別相關問題

位元組數 char 1 short 2 int 由平台 編譯器 決定,可能是2或4,通過sizeof獲知 long 由平台 編譯器 決定,可能是4或8 float 4 double 8 char float x86,4位元組,x64,8位元組 資料範圍 signed char 1位元組 128 12...