C 學習之指標地淺顯理解

2021-10-11 01:47:43 字數 1936 閱讀 5548

3個月c++初級工程師

例如:一周掌握c++入門知識

1、 指標

指標->位址

維基百科上的定義:計算機中的記憶體都是編址的,每個位址都有乙個符號,就像家庭位址或者ip位址一樣。指標,是乙個無符號整數(unsigned int),它是乙個以當前系統定址範圍為取值範圍的整數。宣告指標和宣告乙個無符號整數實質上並無區別。

我的理解其實就是指標和int,long,double,一樣都是一種資料型別,只不過這種型別專門儲存位址。這也就有了標題上寫的,指標指向位址。實際位址記憶體圖如下圖所示:

如何取位址

對於c++變數來說,&是取位址符,舉個例子int a=10, a的位址為0x10001,來說&a得到的就是0x10001。

指標如何宣告

介紹完如何取位址之後,我們現在正是介紹指標的宣告與使用。

指標型別符 *指標名=&變數;

這裡我們還舉上面那個例子,

int *p=&a;//這樣乙個指標變數就生命好了

指標如何使用

介紹完如何宣告指標變數之後,我們現在正是介紹指標的使用。

這裡我們還舉上面那個例子,

int *p=&a;

想要使用我們需要使用乙個新的符號:*

這個符號的作用是解引用,拿出我們指標指向那塊記憶體位址所存的資料,取出格式就是我們宣告的指標型別,舉個例子。

就是如果我們cout指標在記憶體的占用

在不同的系統下指標的大小不同:

32位的作業系統中指標佔4個位元組

64位的作業系統中指標佔8個位元組

空指標的概念

空指標(英語:null pointer)是乙個已宣告但並未指向乙個有效物件的指標,許多程式利用空指標來表示某些特定條件,例如未知長度陣列的結尾或某些無法執行的操作。在可選擇型別(optional type)的程式語言中,空指標通常可以跟可為null的型別(nullable types)和空值(nothing value)進行比較。

常常以int *p=null;這種型別出現。

野指標的概念

野指標:未被初始化的指標,野指標所導致的錯誤和迷途指標非常相似,但野指標的問題更容易被發現。

常量指標

如下宣告方式的指標叫做常量指標。

const

int*p=

&a;

特點:指標的指向可以修改,但是指標指向的值不可以改。

指標常量

如下宣告方式的指標叫做指標常量。

int

*const p=

&a;

特點:指標的指向不可以更改,指標指向的值可以更改

常量指標常量

如下宣告方式的指標叫做指標常量。

const

int*

const p=

&a;

特點:指標的指向不可以更改,指標指向的值也不可以更改

指標使用的幾個原則:

第一:無法確定是否是空指標前一定要判斷

第二:哪個(也就是類)申請的,哪個釋放,同時釋放的時候需要指向nullptr,否則就是野指標

第三:後面衍生出一種叫智慧型指標的(不用釋放,自動釋放)

第四:指標申請了記憶體一定要釋放,哪個申請哪個釋放

參考部落格

對指標變數的淺顯理解

轉換 變數名其實是乙個符號位址,而變數的記憶體位址就是變數的實體地址 也叫指標 程式編輯完後,通過編譯器,將符號位址 變數名 轉化為變數的實體地址,才能實現對變數 記憶體裡 的資料進行操作。二 指標變數 p 作用 是用來存放普通變數位址 實體地址 的變數。換句話說,指標變數裡面的值就是位址。p 這是...

C 指標的學習理解

指標是乙個記憶體位址,而位址是整數,但指標不是整數。指標變數一般沒有 除非是指向指標的指標。指標變數前的操作符 生成它所指向的變數。指標變數的值是指標所指向變數的記憶體位址 和 指標變數 的記憶體位址相同 指標變數 的值就是指標所指向變數的值,通過改變 指標變數 的值可以操作所指向變數的值。如果把乙...

C 之指標學習

指標本身就是乙個物件,允許對指標賦值和拷貝,而且在指標的生命週期內它可以指向幾個不同的物件 指標無須在定義時賦初值。和其他內建型別一樣,在塊作用域內定義的指標如果沒有初始化,也將擁有乙個不確定的值。include using namespace std intmain here are the va...