Linux程式設計預習 陣列與指標

2021-08-09 13:42:03 字數 2057 閱讀 7878

1.什麼是指標?

1)系統為指標分配記憶體空間

2)指標有自己的位址

3)指標能夠存值,但這個值是位址

2.如何判斷指標的型別?

從語法的角度看,你只要把指標宣告語句裡的指標名字去掉,剩下的部

分就是這個指標的型別。這是指標本身所具有的型別。

例:(1)int*ptr;//指標的型別是int*

(2)char*ptr;//指標的型別是char*

(3)int**ptr;//指標的型別是int**

(4)int(*ptr)[3];//指標的型別是int(*)[3]

(5)int*(*ptr)[4];//指標的型別是int*(*)[4]

3.如何判斷指標所指向的型別?

當你通過指標來訪問指標所指向的記憶體區時,指標所指向的型別決定了

編譯器將把那片記憶體區里的內容當做什麼來看待。

從語法上看,你只須把指標宣告語句中的指標名字和名字左邊的指標聲

明符*去掉,剩下的就是指標所指向的型別。

例:(1)int*ptr; //指標所指向的型別是int

(2)char*ptr; //指標所指向的的型別是char

(3)int**ptr; //指標所指向的的型別是int*

(4)int(*ptr)[3]; //指標所指向的的型別是int()[3]

(5)int*(*ptr)[4]; //指標所指向的的型別是int*()[4]

4.常量指標與指標常量的區別?

常量指標:常量是形容詞,指標是名詞,以指標為中心的乙個偏正結構短語。這樣看,常量指標本質是指標,常量修飾它,表示這個指標乃是乙個指向常量的指標(變數)。

指標指向的物件是常量,那麼這個物件不能被更改。

在c/c++中,常量指標是這樣宣告的:

1)const int *p;

2)int const *p;

指標常量:指標是形容詞,常量是名詞。這回是以常量為中心的乙個偏正結構短語。那麼,指標常量的本質是乙個常量,而用指標修飾它,那麼說明這個常量的值應該是乙個指標。

指標常量的值是指標,這個值因為是常量,所以不能被賦值。

在c/c++中,指標常量這樣宣告:

int a;

int *const b = &a; //const放在指標宣告操作符的右側

5.指標和陣列名的關係

它們的值都是乙個位址,當時指標的值可以變化,而陣列的值是不能變的。

6.指標如何運算?

(1)指標±整數 只能用於陣列中某個元素的指標

(2)指標-指標 只有當兩個指標都指向同乙個陣列中的元素時,才允許從乙個指標減去另乙個指標。

7.能否把乙個位址賦給乙個陣列名?

不能,陣列名不能被放在賦值運算子的左邊,乙個陣列是乙個物件,它的陣列名就是指向這個物件的第乙個元素的指標。

8.什麼是指標函式?

指標函式是指帶指標的函式,即本質是乙個函式,函式返回型別是某一型別的指標。

型別識別符號 *函式名(參數列)

int *f(x,y);

首先它是乙個函式,只不過這個函式的返回值是乙個位址值。函式返回值必須用同型別的指標變數來接受,也就是說,指標函式一定有函式返回值,而且,在主調函式中,函式返回值必須賦給同型別的指標變數。

表示:float *fun();

float *p;

p = fun(a);

9.什麼是函式指標?

函式指標是指向函式的指標變數,即本質是乙個指標變數。

int (*f) (int x); /*宣告乙個函式指標 */

f=func; /* 將func函式的首位址賦給指標f */

型別說明符 (*函式名) (引數)

其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向乙個返回整型值的函式。指標的宣告筆削和它指向函式的宣告保持一致。

指標名和指標運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了乙個返回整型指標的函式的原型宣告。

10.指標和位址

指標意味著已經有乙個指標變數的存在,它的值是乙個位址,指標變數本身也放在乙個長度為4位元組的位址當中,而位址概念本身不代表任何變數的存在。指標的值如果沒有固定,是可以變化的,也可以指向另乙個位址。

預習陣列與指標

1.陣列的下標總是從0開始嗎?是的,對陣列a max 來說,它的第乙個和最後乙個元素分別是aa max 1 注意 a max 是乙個有效位址,但該位址並不是陣列a的乙個元素。有時候容易把陣列中的第乙個元素認為是下標唯一的元素,其實並不是 首個元素下標為1 2.可以使用陣列後面第乙個元素麼?可以使用後...

指標與陣列,指標陣列 陣列指標

int a 10 print n a p,a p a,a print n a 1 p,a 1 p a 1,a 1 a做乙個指標,步長為4,指向乙個元素,a做乙個指標,步長為40,指向乙個維陣列 int b 3 4 print n b p,b p,b p b,b,b print n b 1 p,b 1...

指標陣列與陣列指標

1.指標陣列 指標陣列中每乙個元素都是乙個指標,也既是存放字串的首位址。所以指標陣列適合處理若干個長度不等的字串。定義的一般形式為 型別說明符 指標陣列名 陣列長度 例如 int p 3 宣告乙個陣列,指標陣列p,由3個int型別指標變數元素組成 從運算子的優先順序分析,由於 的優先順序大於 所以p...