c 語言使用疑惑小記

2022-02-22 06:25:51 字數 846 閱讀 7086

第一段程式:關於一級指標與二級指標:

int *p = null;

int **p2 = &p;

cout << p 這裡需要注意的是 null 不代表位址0,或者說在windows中代表0. null作為乙個巨集定義,任何系統均有自己的實現方式。(代表乙個不可取值的地方)。二級指標是指向一級指標的位址,與null無關。

分水線第二段程式:關於堆疊修改值的問題

有這麼一種用法: 

void do_signal(long eip) {

*(&eip) = sa_handle;

這是linux原始碼中的一段程式,讓人很費解,這裡做簡要解釋,拆分。

void test(unsigned long p, unsigned long b);

int main()

{int a = 100;

int b = 200;

int *p = &a;

int *q = &b;

test((unsigned long)p, (unsigned long)q);

cout<< *p<

void test(unsigned long p, unsigned long q) {

//*(&p) = b;

cout<< "p:" 《在函式中改變了p的內容(及指標p的指向),所以這裡輸出的 *(int *)p的值為200

而跳出函式時,*(int*)p 的值仍為100.

貌似本段程式並沒有作用, 其實不然:

若在呼叫test函式之前,手動為test函式建立引數棧,那麼改變的就的確是函式棧的真實內容,當函式彈出時,

若對棧不加以**,那麼實際改變的值就真實的存在了程式中。

C語言疑惑

c語言 存款預算 假設銀行一年整存零取的月息為1.875 現在某人手頭有一筆錢,他打算在今後5年中,每年年底取出1000元作為孩子來年的教育金,到第5年孩子畢業時剛好取完這筆錢,現在算一算第1年年初時他應存入銀行多少錢?define rate 0.225 rate 12 1.875 intmain ...

c語言之疑惑問答

在我們學習當中,我們會思考很多問題,下面我們就提出幾個針對前面學習的東西的一些疑惑。include intmain else return0 這段 的執行結果居然會是a凡是函式內部定義的都在stack區,都是全域性變數。凡是函式外部定義的變數都在data區,是全域性變數?這段話是有問題的,因為當我們...

c語言的 h檔案使用小記

好久沒有使用c語言中的一些東西,都忘得差不多了。現在要完成乙個專案,其中我要提供相應的介面給別人,別人去實現,我直接呼叫。很容易想到的就是,他書寫乙個.h檔案,其中包含了相關的函式,我直接在包含.h檔案,我就可以直接呼叫相關函式了。上網查詢了相關寫法,h檔案大致如下 ifndef key h def...