指標與變數

2021-07-14 19:12:42 字數 2017 閱讀 8662

指標變數是一種特殊的變數,它和以前學過的其他型別變數的不同之處是:用它來指向另乙個變數。

為了表示指標變數和它所指向的變數之間的聯絡,在c++中用「 * 」符號表示指向,例如,i_pointer是乙個指標變數,而 *i_pointer 表示 i_pointer 所指向的變數,見圖6.3。

下面兩個語句作用相同:

c++規定所有變數在使用前必須先定義,即指定其型別。在編譯時按變數型別分配儲存空間。對指標變數必須將它定義為指標型別。先看乙個具體例子:

int i, j;                                        //定義整型變數i,j

int *pointer_1, *pointer_2;       //定義指標變數*pointer_1,*pointer_2

第2行開頭的int是指:所定義的指標變數是指向整型資料的指標變數。也就是說,指標變數pointer_1和pointer_2只能用來指向整型資料(例如i和j),而不能指向浮點型變數a和b。這個int就是指標變數的基型別。指標變數的基型別用來指定該指標變數可以指向的變數的型別。

定義指標變數的一般形式為:       基型別 *指標變數名;

下面都是合法的定義:

float *pointer_3;  // pointer_3是指向單精度型資料的指標變數

char *pointer_4;  // pointer_4是指向字元型資料的指標變數

請注意:指標變數名是pointer_3和pointer_4,而不是*pointer_3和*pointer_4,即「*」不是指標變數名的一部分,在定義變數時在變數名前加乙個「*」表示該變數是指標變數。

pointer_1=&i;  //將變數i的位址存放到指標變數pointer_1中

pointer_2=&j;  //將變數j的位址存放到指標變數pointer_2中

這樣,pointer_1就指向了變數i,pointer_2就指向了變數j。見圖6.4。

一般的c++編譯系統為每乙個指標變數分配4個位元組的儲存單元,用來存放變數的位址。

在定義指標變數時要注意:不能用乙個整數給乙個指標變數賦初值,在定義指標變數時必須指定基型別。有兩個與指標變數有關的運算子:

例 a   通過指標變數訪問整型變數。

複製

純文字新視窗

#include

using

namespace std;

intmain()

#include using namespace std;

int main( )

cout<<

"a="

<

" b="

<

cout<<

"max="

<

" min="

<

return0;

}

#include using namespace std;

int main( )

{ int *p1,*p2,*p,a,b;

cin>>a>>b; //輸入兩個整數

p1=&a; //使p1指向a

p2=&b; //使p2指向b

if(a運**況如下:

4578↙

a=45 b=78

max=78 min=45

輸入a的值45,b的值78,由於a

請注意,這個問題的演算法是不交換整型變數的值,而是交換兩個指標變數的值。

指標與指標變數

1 i pointer是乙個指標變數,而 i pointer表示i pointer所指向的變數即i。下面兩個語句作用相同 i 3 i pointer 3 2 定義指標變數 基型別 指標變數名 下面都是合法的定義 float pointer 3 pointer 3是指向單精度型資料的指標變數 char...

指標與變數

變數 乙個東西在記憶體裡面,而你想用語言去表示那個東西,就必須找到乙個符合去表示它。它可以是常量 變數 有了變數,你就可以用他傳遞值,呼叫它 修改它,玩弄它,讓他欲罷不能。指標呢?還是不修改原值?如果使用foo mymoney 這種形式的話,就會把mymoney代表的記憶體中的內容 複製 乙份到函式...

陣列變數與指標

背景 完全的c初學者。試圖搞清楚陣列的概念,做了一些小試驗,查了一些解釋,合成此文。我們說陣列變數相當於常量指標,那麼實際它就是常量指標名嗎?簡單試驗 1 include 23 int main 宣告陣列變數 22 printf s 23 printf s 1 24 printf 陣列變的位址佔位 ...