指標又叫位址。
型別名 *指標變數 int *a;
(指標變數前面的*表示該變數的型別是指標型變數,指標變數名是a,而不是*a)
條件語句表示式*a產生的結果型別是int,知道了*操作符執行的是間接訪問操作以後,我們可以推斷a肯定是乙個指向int的指標。
int *a;
警告:
c在本質上是一種自由形式的語言,這很容易誘使你把星號寫在靠近型別的一側,如下所示
int* a;
這個宣告與前面乙個宣告有相同的意思,而且看上去更為清楚,a被宣告為型別是int*的指標。但是這並不是乙個好技巧,原因如下:
int* b, c, d;
人們很自然的以為這條語句把所有三個變數宣告為指向整型的指標,但事實並非如此。我們被它的形式愚弄了,星號實際上是表示式*b的一部分,只對這個識別符號有用。b是乙個指標,但其餘兩個變數只是普通的整型。要宣告三個指標,正確的語句如下:
int *b, *c, *d;
在宣告指標變數時,你也可以為它指定初始值。這裡有乙個例子,它宣告了乙個指標,並用乙個字串常量對其進行初始化;
char *message="hello world";
這條語句把message宣告為乙個指向字元的指標,並用字串常量中第乙個字元的位址對該指標進行初始化。
警告:這種型別的宣告所面臨的乙個危險是你容易誤解它的意思。在前面乙個宣告中,看上去初始值似乎是賦給表示式*message,事實上它是賦給message本身的。換句話說,前面乙個宣告相當於:
char *message;
message="hello world";
指標及指標變數
假設i的起始位址為2000,那麼2000就是變數i的指標,p就是乙個指標變數。定義指標變數 型別名 指標變數名 如 int p1 p1是指向整型的指標,定義指標變數時必須指定型別 注意 1.指標變數前面的 表示該變數的型別為指標變數,即指標變數名為p1,而不是 p1。2.指標變數只能用來存放位址,不...
C 指標 指標變數
三 和 小結 四 指標變數的運算 指標變數 存放指標的變數,本質上是乙個整數。指標所指向的值,可以是任何型別資料,如陣列 字串 函式或普通變數 指標變數。定義指標變數與定義普通變數非常類似,不過要在變數名前面加星號 datatype name 或者 datatype name value 表示這是乙...
指標和指標變數
指標 乙個變數的位址稱為該變數的指標。指標變數 專門用來存放另一變數的位址 指標 的變數。用來指向另一變數。指標變數的值 指標變數中存放的值 指標 位址 定義乙個指標變數 如下 int i float p p是指向實型變數的指標變數,指標變數名是p,p為指標變數p所指向的儲存單元 p i i為變數i...