c語言,定義多個指標的寫法,多個指標的宣告
阿新 • • 發佈:2019-01-02
先說明正確的多個指標宣告應該為:例:int *a,*b,*c,*d;
按照常理定義變數應該為:型別 變數名 如:int a;
但是定義指標時,int *a;依照 型別 變數名 的規則來看,就像定義了一個int型的,名字為“*a”的變數,但是實際上我們宣告的變數為int*型的變數a。
那我們可以這樣int* a;這樣看起來型別就是int*了,變數為a,但是當我們int* a,b;時,看起來就是定義了兩個int*型的指標,實際上是定義了一個int*型的變數a和一個int型的b。
有人說可以這樣理解,int *a;可以把(*a)看成一個整體也就是(*a)當作int型別變數,a為int*型指標,這樣解釋可以,但是遇到比如陣列指標 char (*p)[3];或者函式指標int (*p)(int a,int b);時,這麼解釋也說不過去。
那有的人說為何不整成int_ptr,char_ptr來定義各種型別變數的指標,如果這樣就意味著沒有“*”這種方式定義指標了,那二級指標還得整個int_ptr_ptr,char_ptr_ptr,那得多少關鍵字呀!!,自己定義結構體還得相應用編譯器生成定義結構體指標的型別名,明顯是不科學的,這種關鍵字加運算子的宣告方式,明顯很科學。
因此要在一條語句中宣告多個變數,必須在每個變數前面加上“*”。