指標基礎知識

2021-07-09 17:35:48 字數 1124 閱讀 9545

指標的基礎知識

一、空指標的定義方法

int

*p1 = nullptr;

int*p2 = 0;

//include

int*p3 = null;

int c = 0;

int*p4 = c; //此種方法是錯誤的,不能將int型變數直接賦值給指標,即使其值是0也不行

這三種方法定義的空指標是等價的,只是第三種需要包含標頭檔案cstdlib

2、指標的賦值

給指標賦值就是給它乙個新的位址,從而讓它指向乙個新的物件
int i = 100;

int *pi1 = 0; //pi1被初始化成空指標,不指向任何物件

int *pi2 = &i;//pi2被初始化,指向i

int *pi3;//pi3未初始化,指向物件不可預知

pi3 = pi2;//pi3現在和pi2一樣,指向i

pi2 = 0;//pi2被置成空指標,不指向任何物件

3、指向指標的指標

指標也是乙個物件,它也有自己的位址,所以有指標的指標
int tt = 100;   

int *pt1 = &tt; //pt1是指向tt的指標

int **pt2 = &pt1; //pt2是指向pt1的指標

int ***pt3 = &pt2; //pt3是指向pt2的指標

cout

cout

<<*pt1cout

<<**pt2cout

<<***pt3引用不是乙個物件,所以不能定義指向引用的指標,但是指標是乙個物件,所以有指標的引用

int ts = 43;

int*ps1 ; //ps1是int型指標

int*&r = ps1; //r是ps1的引用

r = &ts; //對r賦值相當於對ps1賦值,所以現在ps指向ts,*ps1 和*r的值都是43

*r = 10;//對r解引用相當於對ps1解引用,得到ts,此操作相當於對ts賦值

指標基礎知識

那麼編譯器就在記憶體中開闢1個整型單元存放變數a,我們假設這個整型單元在記憶體中的位址是 0x1000 那麼記憶體0x1000單元中存放了資料10,每次我們訪問a的時候,實際上都是訪問的0x1000單元中的10.現在定義 int p p a 當編譯器遇到語句int p時,它也會在記憶體中給指標變數p...

c和指標 指標基礎知識

1 記憶體和位址 2 指標初始化 3 指標變數的內容 4 間接訪問操作符 5 非法指標 null指標 1 記憶體和位址 指標是儲存的位址,比如0x0,0x1 0x2 可以這麼理解 指標可以狹義理解為記憶體位址,是存放記憶體位址的變數。網上或者書上,總是一段很多字數去表示指標說什麼,剛開始學習時候,看...

陣列和指標基礎知識

本節主要學習了陣列和指標 1.首先介紹陣列的概念 陣列 型別相同的數值集合 一般格式 int arr n 如例一。1.2.如何使用 首先用 for 迴圈初始化陣列 1.3數 組 名 的 含 義 arr 1 sizeof arr sizeof arr 0 分別為 陣列首位址加一 求陣列記憶體大小 求陣...