第一段程式:關於一級指標與二級指標:
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...