C語言知識點(1) 資料宣告

2021-10-09 06:19:51 字數 2154 閱讀 5673

1、& 和 | 不同於&& 和 ||

& 和 |:是按位運算子

&& 和 ||:邏輯運算子

我們常常在if判斷語句中使用,基本上沒出現過問題,是因為我們判斷的結果都是0和1,所以按位運算和邏輯運算結果一樣;

if(i == "1" && j == "2")和if(i == "1" & j == "2")執行結果相同

但是如果是在平時的運算而不是邏輯判斷中就會大不相同;

i = 8;

j = 4;

k1 = i || j;    //12

k2 = i | j;      //1

2、資料宣告(這是乙個難點,很多一知半解的人搞不清楚,很考指標,在面試題中也經常遇到)

a) 乙個整型數

b)乙個指向整型數的指標

c)乙個指向指標的的指標,它指向的指標是指向乙個整型數

d)乙個有10個整型數的陣列

e) 乙個有10個指標的陣列,該指標是指向乙個整型數的。

f) 乙個指向有10個整型數陣列的指標

g) 乙個指向函式的指標,該函式有乙個整型引數並返回乙個整型數

h) 乙個有10個指標的陣列,該指標指向乙個函式,該函式有乙個整型引數並返回乙個整型數

答案:int a;

int *a;

int *(*a);

int a[10];

int *a[10];

int (*a)[10];

int (*a)(int);

int (*a[10])(int);

ps:不理解的可以在看下面的指標學習再來看看。

這兩個知識點剛剛開始看到會出現一臉懵逼的感覺,但是仔細琢磨你可以學習到很多,讓你在指標研究上很深一步的了解。

2、函式宣告:

解釋(* (void (*)()))0)();

首先具備的知識:

如何宣告乙個型別和指標型別

變數宣告

float f,g;         //    是宣告f/g為float型別

則 float ((f));    //是宣告f為float型別,括號並不影響

float ff();    //是返回乙個float型別的函式。

float *pf;    //說明*pf就是float型別,而pf就是指向float的指標,也就是指向位址。float* pf;    //與上乙個是一樣的表示

函式宣告

float *pf();    //表示函式返回值為乙個指向float的指標(指標函式);也可以這樣表示float *(pf()) ;= float *( pf );// pf = *pf ;

float (*ph)();//ph是乙個函式指標(還是乙個指標),是指向函式的指標,函式的返回值為float;

(float (*)()) 或者(float (*void)())表示乙個返回值為float型別的函式的指標的型別轉換符(與int型別,是乙個宣告);

分析(* (void (*)()))0)();可知(void (*)()))與上述一致,不過返回值為float,當typedef (void (*)())) v;

則原式子為 (* v 0)()  

v 0表示把0的型別強制轉換為v型

相當於(*pf)();

可以看出這是在呼叫函式(相當於(*fun)();).

3、指標學習

用優先順序規則分析下面例子:

char * const *(*next)();

1、從next可以看出,這是乙個函式的函式名,

2、(*next)()知這是乙個函式指標

3、const *(*next)()返回值是*const,也就是說,返回值是乙個指標;

4、char *可知,const指標指向的是乙個指向char的指標;

總結:是乙個指向函式的指標(函式指標),函式返回乙個指標,改指標指向乙個唯讀的指向char的指標

反過來就可以推資料宣告的題目了。

這是《c專家程式設計》裡面的學習宣告型別方法可以學習一下,能理解最後,不能就算了,就乙個乙個來分析。

練習1:a+++++b是什麼含義

c語言知識點 1

1.參與運算的資料是什麼型別,結果也是什麼型別,並且參與運算資料必須是同一型別,會進行自動型別轉換 double d 10 3 3.00000,還有自動型別提公升 2.int size sizeof char 僅這種情況括號不能去掉 3.c語言中,條件成立為真,不成立為假,任何數值都有真假性,只有0...

C語言知識點梳理 1

include int main 這是主函式。當程式執行時main函式是起始函式,程式的起點。int為函式的返回值型別,括號中的內容為函式的引數,這裡主函式沒有引數,所以括號中沒有內容,在自定義函式中如果需要引數則需要在括號中依次定義引數的型別和引數名 如 int pow int int a,int...

C語言知識點 複習(1)

知識點總結 1.所有巨集定義 列舉常量 唯讀常量全用大寫字母命名,用下劃線分割單詞。2.不同型別資料之間的運算注意精度擴張問題,一般低精度向高精度擴張。3.sizeof在計算變數的時候,括號可以省略 在計算資料型別的時候,括號是不可以省略的。4.const應該改寫為readonly,是唯讀的變數,並...