標籤:進位 取出 define 運算子 c語言 max 步驟 異或 維數
12).預先處理指令
1. 什麼叫做預先處理代碼.
以#開頭的代碼就是預先處理代碼 #warning #import
2. 手寫1個C程式的步驟.(面試題)
1>編寫代碼
2>編譯
1)執行.c中的預先處理代碼
2)檢查文法
3>連結
4>執行
3. 預先處理指令的分類.(面試題) ******
1>檔案包含指令 #include
2>宏定義 #define (用來替換代碼)
3>條件編譯 #if (滿足一定的條件才編譯)
4. 預先處理指令的特點.
1>都是以#開頭
2>後面沒有分號
3>在編譯的時候,檢查文法之前進行
"注意
以#開頭的代碼就是預先處理代碼
13).sizeof運算子
sizeof運算子的作用?
作用:計算常量,變數在當前系統上記憶體中所佔的位元組數
sizeof (資料類型)
sizeof (變數)-----用的最多!
sizeof (常量)
注意,
char類型的變數在記憶體中佔1個位元組;
char類型的常量在記憶體中佔4個位元組;
綜上所述,為了安全起見,sizeof後面最好加上括弧!
14).按位異或
^ 異或運算
不同為1,相同為0
注意:
1 相同整數相^的結果是0;
2 一個整數^另一個整數2次結果不變 ; 3^2^2 = 3
3 整數相^跟順序無關 3^2^3 = 2^3^3 = 2
15). 按位左移或者右移
1,按位左移運算. <<
參與按位左移運算的位元據. 向左移動指定的位元. 低位不夠補0 高位溢出就丟棄
2,按位右移. >>
參與按位右移的位元據.向右移動指定的位元. 低位溢出丟棄,高位補符號位.
左移
1). 左移運算有可能會改變其正負性.
2). 將1個數左移n位,相當於將這個數乘以2的n次方.
右移
1). 右移運算不會改變正負性.
2). 將1個數按位右移n位.相當於這個數除以2的n次方.
16).深入變數的細節
一,變數在記憶體中的儲存
1,在為變數分配位元組空間的時候,是從高地址向低地址分配的
2,儲存的時候,是低位儲存在低位元組,高位儲存在高位元組.
二,變數的地址
3,變數的地址是組成這個變數的低位元組的地址.
4,使用&取地址可以取出變數的地址
17).數組地址問題
1.數組的地址 == 數組名 == 數組中的低位元組的地址 == 數組中下標為0的元素的地址 == 數組中下標為0的元素的低位元組的地址.
2,使用 %p 來列印數組名
18).二維數組與函數
1,當二維數組作為函數的參數的時]候.會丟失這個二維數組的行數和列數,解決方案是把行數和列數傳遞過來
2,當二維數組作為函數的參數的時候,要保證實參二維數組的列數必須要和形參二維數組的列數一致.
一個一勞永逸的方法是,寫參數的時候,先寫行數和列數,最後再寫二維數組,然後二維數組的列數用參數指定.
void test2(int rows,int cols,int arr[][cols]);
19). 使用字元數組儲存字串注意的地方
1). 如果沒有指定數組的長度.,那麼數組的長度就為字串的長度+1
2). 如果指定了長度,字元數組的長度就是指定的長度
3). 如果指定的字元數組的長度小於等於了字串的長度,這個時候就會有問題了.
就會出現儲存不下的情況.(不要指定長度)
4). 如果在聲明1個字元數組的同時我們就初始化1個字元資料給這個數組,
那麼這個時候是可以用中文.
20).指標
指標是一個資料類型,這資料類型可以用來定義變數,定義什麼變數,指標變數,那這個指標變數是用來幹什麼的,專門用來儲存地址的!
block是一個資料類型,這資料類型可以用來定義變數,定義的這個變數用來儲存一段代碼塊!!
21). 指標作為函數的參數
1,指標作為函數的參數,在函數的內部去訪問參數指標指向的變數的時候,其實訪問的就是實參變數.
2, 指標作為函數的參數,可以實現什麼效果?
函數的內部可以修改實參變數的值.
3. 什麼時候需要將指標作為函數的參數?
當函數需要返回多個資料的時候就可以使用指標作為函數的參數.
如何?的?
使用指標作為函數的參數. 讓調用者將自己的變數的地址傳遞到函數的內部
函數的內部通過指標就可以修改實參變數的值.
4,返回數組最大值和最小值的思路
1>讓調用者傳遞兩個變數的地址給我.
2>讓調用者自己先準備兩個變數.然後將這兩個變數的地址給我.
3>函數內部是不是可以通過指標 直接 修改 調用者的變數的值.
*pMax = max; //把最大值賦值給pMax指標指向的變數.
*pMin = min;//把最小值賦值給pMin指標指向的變數.
22).指標為什麼要分類型
1, 指標變數的類型決定了 通過這個指標找到位元組以後 連續操作多少個位元組空間.
2, 指標的類型如果不和指向的變數的類型相同話. 那麼通過指標就無法正確的操作指向的變數.
注意:
p1[n] = *(p1+n); 前提是p1是1個指標變數.
C語言總結2