二級指標的概念
首先任何值都有位址,一級指標的值雖然是位址,但這個位址做為乙個值亦需要空間來存放,是空間就具有位址,這就是存放位址這一值的空間所具有的位址,二級指標就是為了獲取這個位址,一級指標所關聯的是其值(乙個位址)名下空間裡的資料,這個資料可以是任意型別並做任意用途,但二級指標所關聯的資料只有乙個型別乙個用途,就是位址,指標就是兩個用途提供目標的讀取或改寫,那麼二級指標就是為了提供對於記憶體位址的讀取或改寫指標的表現形式是位址,核心是指向關係指標運算子「*」的作用是按照指向關係訪問所指向的物件.如果存在a指向b的指向關係,則a是b的位址,「*a」表示通過這個指向關係間接訪問b.如果b的值也是乙個指標,它指向c,則b是c的位址,「*b」表示間接訪問c如果c是整型、實型或者結構體等型別的變數或者是存放這些型別的資料的陣列元素,則b(即c的位址)是普通的指標,稱為一級指標,用於存放一級指標的變數稱為一級指標變數。a(即b的位址)是指向指標的指標,稱為二級指標,用於存放二級指標的變數稱為二級指標變數.根據b的不同情況,二級指標又分為指向指標變數的指標和指向陣列的指標
二級指標的分類
指向指標變數的指標
在如上的a指向b、b指向c的指向關係中,如果a、b、c都是變數,即c是普通變數,b是一級指標變數,其中存放著c的位址,a是二級指標變數,其中存放著b的位址,則這3個變數分別在記憶體中佔據各自的儲存單元,它們之間的相互關係下圖所示,相互之間的前後位置關係並不重要.此時,b是一級指標變數,b的值(即c的位址)是一級指標資料;a是二級指標變數,a的值(即b的位址)是二級指標資料.
指向陣列的指標
在c語言中,陣列與其它變數在使用上有很大的不同.無論是字元型、整型、實型變數,還是結構體型別或者指標型別的變數,語句**現變數名都代表對該變數所在記憶體單元的訪問,變數名代表整個變數在記憶體中的儲存單元,可以向該變數賦值,也可以從中取出資料使用.但是定義乙個陣列之後,陣列名並不代表整個陣列所佔據的記憶體單元,而是代表陣列首元素的位址.
二級指標例子:
複製** **如下:
int *q; //定義乙個一級指標變數,它指向乙個普通變數(即它存的是乙個變數的位址)
int **p; //定義乙個二級指標變數,它指向乙個指標變數(它存的也是乙個變數位址,只不過是乙個指標變數的位址)
int s;
q = &s; //q程式設計客棧中存的是整型變數s的位址,所以q是一級指標
p = &q; //p中存的是一級指標q的位址,所以p是二級指標
例子:複製** **如下:
# include
void f(int ** q);
int main(void)
void f(int ** q)
1、二級指標的相關問題
複製** **如下:
#include "iostream"
#include "string"
#includwww.cppcns.comshnkie "cmath"
using namespace std;
int main()
{char ch='a';
char *p1=&ch;
char **p=&p1;
cout//cout//cout
思考上面的輸出是什麼?
2、如下程式,輸出是什麼?
複製** **如下:
#include "iostream"
using namespace std;
int main()
{int a=12;
int *p=&a;
int **p1=&p;
cout3、如下程式的輸出是什麼?
複製** **如下:
#include "iostream"
using namespace std;
int main()
{int *p=null;
int **p1=&p;
cout本文標題: c語言指標之二級指標示例
本文位址:
C語言二級指標
指標是c語言的靈魂,我想對於一級指標大家應該都很熟悉,也經常用到 比如說對於字串的處理,函式引數的 值,結果傳遞 等,對於二級指標或者多級指標,我想理解起來也是比較容易的,比如二級指標就是指向指標的指標.n級指標就是.但是可能大家比較不容易理解的是,二級指標或者多級指標用在 呢?怎麼使用呢?有沒有必...
C語言指標(函式指標陣列,二級指標)
int p num char int,int int p num int a 函式指標陣列指標和前面的陣列指標其實沒有太大區別。然後今天主要理一下函式指標陣列和二級指標。函式指標陣列中,存放的一定要是相同返回值型別,以及相同引數列表的函式指標,這樣陣列可以通過下標來呼叫不同的函式,省去了使用大量的判...
C語言日記 二級指標
指標不僅僅可以指向普通的資料型別,例如 int double char等,也可以指向乙份指標型別的資料,例如 int double char。如果乙個指標指向另外乙個指標我們就稱他為二級指標 指向指標的指標 假設有乙個 int 型別的變數 a,p1是指向 a 的指標變數,p2 又是指向 p1 的指標...