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 在上面這段 中我們...