指標的有關問題

2021-08-15 07:27:05 字數 1402 閱讀 8380

1.

指標和陣列

的區別? 答:

陣列對應著一塊記憶體區域,而指標是指向一塊記憶體區域。其位址和容量在生命期裡不會改變,只有陣列的內容可以改變;而指標卻不同,它指向的記憶體區域的大小可以隨時改變,而且當指標指向常量字串時,它的內容是不可以被修改的,否則在執行時會報錯。 2.

指標和引用

的區別? 答:

(1)引用必須初始化,指標則不然。(2

)引用不能為空引用,指標則不然。(3

)引用在初始化後,不能再引用其他物件,指標則不然。

3.指標的關係運算是怎樣的?

答:對指標執行關係運算也是有限制的,用

< 、> 、>= 、<= 的前提是它們都指向同一陣列元素。但是對任何指標都是可以進行相等或不相等的測試,所得的結果是相等或不相等。

4.任何時候都可以用其他指標代替void指標?

答:是的任何時候都可以用其他型別的指標代替void指標或用void指標代替其他型別的指標。當進行純粹記憶體操作時,或傳遞乙個指向未定型別的指標時,可以使用void指標,void指標也常用作函式指標。

5.null總是等於0嗎?

答:如果是與比較的結果的話,null確實總是等於

0,這也是空指標定義的本質所在;但如果指的是其儲存方式和整型值的話,答案是不,

null

並不必須被存為乙個整型值0。

6.typedef有何妙用?

答:例如,要定義用法函式指標 int (

*fun)(int*, int*)

,但每次都這樣定義會很麻煩,可以用

typedef

來宣告乙個新的定義,即函式指標可以如下定義:

typedef int (*fun)(int*, int*);

fun fun;

7.使用指標函式的注意什麼?

答:當定義指標函式時,盡量不要返回區域性變數的指標,因為區域性變數儲存在棧空間,函式呼叫完就釋放了

8.右左法則是什麼?

答:從最內部的括號開始閱讀宣告,向右看,然後向左看。碰到乙個括號就調轉閱讀的方向

9.怎樣定義乙個指向指標型資料的指標變數?

答:char **a; a 前面有兩個*號

,相當於

*(*a)

。顯然*a

是指標變數的定義形式,如果沒有最前面的

*,那就 是定義了乙個指向字元資料的指標變數。現在它前面又有乙個

*號,表示指標變數

a 是指向 乙個字元指標型變數的。

*a 就是

a 所指向的另乙個指標變數。

10.什麼是指向指標的指標?

答:如果乙個指標變數存放的又是另乙個指標變數的位址,則稱這個指標變數為指向指標的

指標變數。由於指標變數直接指向變數,所

以稱為「單級間址」。而如果通過指向指標的指標變數來訪問變數則構成「二級間址」。

C 與指標有關的問題

c 是一門功能強大的語言。它既相容了 c中的最重要的內容 指標,又有物件導向的功能,如使用繼承組合以及虛函式實現多型等等。如果使用者對這些內容了解不夠深入具體。則常常在使用 c 的指標時會出現不少問題。現舉一些例子如下。其中全部例子來自書本或者網上 問題 如下 上面的 編譯都能通過,但是執行的結果卻...

有關於指標函式的問題

哎呀,我剛剛寫了一大堆,點了提交之後什麼都沒了,簡單寫寫吧,暈死 typedef int fp int int fun int n void testfp int n,fp fun fp fp fun int main 這段 是看別人的,就是第一句我沒看懂,於是就有了我的實驗 includevoid...

指標漫談(三) 有關指標初始化的問題

最近才釐清指標初始化的問題,不知道大家有沒有同樣的困惑,就是指標的初始化到低幹了些什麼工作?到底是因為位址訪問操作符給了指標變數的位址還是編譯器分配的?為了 清楚這個問題,我們先從普通變數看起,例如 int a printf p a a 10 printf d n p n a,a 在上面這段 中我們...