乙個禮拜學習指標的總結 變數和二維陣列

2021-07-16 12:50:45 字數 2617 閱讀 8786

這個禮拜學習的是指標的東西,指標其實還是蠻難的,現在掌握的不是很好。

在c語言中,允許用乙個變數來存放指標,這種變數稱為

指標變數

。因此,乙個指標變數的值就是某個記憶體單元的位址或稱為某記憶體單元的指標。

設有字元變數c,其內容為 'k'(ascii碼為十進位制數 75),c占用了0x11a號記憶體單元(位址通常用十六進數表示)。設有指標變數p,內容為 0x11a,這種情況我們稱為p指向變數c,或說p是指向變數c的指標。

嚴格地說,乙個指標是乙個位址,是乙個常量。而乙個指標變數卻可以被賦予不同的指標值,是變數。但常把指標變數簡稱為指標。

變數:變數的指標就是變數的位址。存放變數位址的變數是指標變數。即在c語言中,允許用乙個變數來存放指標,這種變數稱為指標變數。因此,乙個指標變數的值就是某個變數的位址或稱為某變數的指標。為了表示指標變數和它所指向的變數之間的關係,在程式中用*符號表示「指向」,例如,i_pointer代表指標變數,而*i_pointer是i_pointer所指向的變數。因此,下面兩個語句作用相同:

i=3;

*i_pointer=3;

第2個語句的含義是將3賦給指標變數i_pointer所指向的變數。

定義指標變數的一般形式為:

型別說明符 *變數名;

其中,*表示這是乙個指標變數,變數名是乙個合法的識別符號,型別說明符表示該指標變數所指向的變數的資料型別。例如:

int *p1;

表示p1是乙個指標變數,它的值是某個整型變數的位址。或者說p1指向乙個整型變數。至於p1究竟指向哪乙個整型變數,應由向p1賦予的位址來決定。再如:

int *p2;  //p2是指向整型變數的指標變數

float *p3;  //p3是指向浮點變數的指標變數

char *p4;  //p4是指向字元變數的指標變數

應該注意的是,乙個指標變數只能指向同型別的變數,如 p3 只能指向浮點變數,不能時而指向乙個浮點變數,時而又指向乙個字元變數。

然後是二維陣列,現在定義乙個二維陣列    int a[3][4]=,,};    a是二維陣列名,a代表整個二維陣列的首位址,也是二維陣列0行的首位址,等於0,a+1代表第一行的首位址,等於4,a[0]是第乙個一維陣列的陣列名和首位址,因此也為0。*(a+0)或*a是與 a[0] 等效的, 它表示一維陣列a[0]中第 0 個元素的首位址,也為0。&a[0][0]是二維陣列a的0行0列元素首位址,同樣是0,因此,a、a[0]、*(a+0)、*a、&a[0][0]是相等的。

同理,a+1是二維陣列1行的首位址,等於,4,a[1]是第二個一維陣列的陣列名和首位址,因此也為,4。&a[1][0]是二維陣列a的1行0列元素位址,也是4,因此a+1、a[1]、*(a+1)、&a[1][0]是等同的。另外,a[0]也可以看成是a[0]+0,是一維陣列a[0]的0號元素的首位址,而a[0]+1則是a[0]的第1個元素首位址,由此可得出a[i]+j則是一維陣列a[i]的j號元素首位址,它等於&a[i][j]。由a[i]=*(a+i)得a[i]+j=*(a+i)+j。由於*(a+i)+j是二維陣列a的i行j列元素的首位址,所以,該元素的值等於*(*(a+i)+j)。

指標的定  義 含  義

int i;  定義整型變數 i。

int *p;p為指向整型資料的指標變數。

int a[n];定義整型陣列a,它有n個元素。

int *p[n];定義指標陣列p,它由n個指向整型資料的指標元素組成。

int (*p)[n];p為指向含n個元素的一維陣列的指標變數。

int f();f 為乙個返回整型的函式。

int *p();p為乙個返回指標的函式,該指標指向整型資料。

int (*p)();p為指向函式的指標,該函式返回乙個整型值。

int **p;p是乙個指標變數,它又指向另外乙個指標變數,該指標變數指向整型資料。

指標變數賦值:將乙個變數的位址賦給乙個指標變數。

p=&a;  //將變數a的位址賦給p

p=array;  //將陣列array的首位址賦給p

p=&array[i];  //將陣列array第i個元素的位址賦給p

p=max;  //max為已定義的函式,將max的入口位址賦給p

p1=p2;  //p1和p2都是指標變數,將p2的值賦給p1

注意,不能將乙個數值直接賦給指標變數,例如p=1000;是沒有意義的,一般會引起程式崩潰。

定  義

含  義

int i;

定義整型變數 i。

int *p;

p為指向整型資料的指標變數。

int a[n];

定義整型陣列a,它有n個元素。

int *p[n];

定義指標陣列p,它由n個指向整型資料的指標元素組成。

int (*p)[n];

p為指向含n個元素的一維陣列的指標變數。

int f();

f 為乙個返回整型的函式。

int *p();

p為乙個返回指標的函式,該指標指向整型資料。

int (*p)();

p為指向函式的指標,該函式返回乙個整型值。

int **p;

p是乙個指標變數,它又指向另外乙個指標變數,該指標變數指向整型資料。

乙個禮拜的學習總結

這個禮拜開始的學習c 語言,第一天的時候並沒有講什麼,第二天的時候開始教了我們一些系統命令運算,dos命令,這些是簡單的開啟一些文字文件,計算器之類的,然後學習了轉義字元的轉換,比如單引號和雙引號分別用 和 表示,雙斜槓表示乙個反斜槓,這些記住就行了,然後還有乙個知識點,變數,它的組成是由字母,下劃...

關於定義乙個指標與指標變數

struct stat st struct stat st 就事論事的解釋 struct stat st 是定義了乙個stat結構體的指標,這句話的重點在於是 指標 其本質上,在32位的體系結構中 也就是乙個32位的數而已。對於名稱和實體來說 名稱 乙個名字叫做st指標 實體 記憶體裡面,也只有乙個...

乙個簡單的一級指標和二級指標

如下 int i 1 int p i int pp p printf i p n i printf p p n p printf p d n p printf p p n p printf pp p n pp printf pp p n pp printf pp d n pp printf pp p...