C指標的理解

2021-10-03 02:13:55 字數 1125 閱讀 8301

首先我們來理解最簡單的語句 int a = 1;

這一句看似只是在給a賦值,實際上還給a分配了記憶體。

我們再來看這個例子

int a;

scanf("%d",&a);

第一句是定義整型變數a,第二句是在給a賦值。我們注意到,在使用scanf()的時候出現了「&」符號,它和a在一起---->「&a」表示的是a的記憶體位址。

我們打個比方,把記憶體位址比作房間號,房間號對應的房間就是記憶體位址對應的記憶體。我們再來看這個例子

int a=1;//向系統申請了乙個int型的房間房間裡裝的是數字1

int *p;//p表示管理int型房間的管理員,

p=&a;//管理員找到a房間的位址

*p=2;//*p可以表示房間內部的東西*p==a,把2塞入房間,把之前1丟出去

printf("%d",a);//此時a等於2;

<1>

int a[3];//向系統申請了3個連續的int型房間,房間裡現在沒東西;

int *p//p表示管理int型房間的管理員;

p=a;//這裡為什麼不用&a呢,因為陣列名表示的是首位址。所以現在p站在開頭的門牌號前

for(int i=0;i<3;i++)

//這一小段可以給陣列賦值。

int a[2][3];//向系統申請了2*3個int型房間,a表示首位址,即a[0][0]的房間號;這裡說是二維陣列,但是在管理員面前看作一維

int *p;//p表示管理int型房間的管理員

p=a;

for(int i=0;i<2*3;i++)

//這一小段可以給陣列賦值。

之前介紹的都是一級指標,事實上指標也是有自己房間和房間號的而指標的房間裡裝的是指標正在訪問的的房間號(記憶體位址)

<1>

int a[3];

int *p=a;//訪問陣列a首位址

int **q=&p;//訪問p的位址

for(int i=0;i<3;i++)

這裡這個例子簡單的表示了多級指標的的好處,就是可以訪問的東西更多。p只能去訪問a陣列,q又能訪問p又能訪問數字a,所以多級指標的運用還是很有必要的。

C 指標的理解

1.記憶體長成啥樣?物理記憶體條由連續排列晶元組構成,在計算機中記憶體模型也被抽象為一組連續的儲存空間,每個空間都能夠儲存若干位元組的資料,每一塊儲存空間也有乙個特定的序號,從0到n。備註 為了便於理解,此處,將記憶體儲存空間橫向排列 實際橫縱排列的意義相同 0000 0001 0002 0003 ...

C 指標的理解

一.c 位址指標的基本概念在計算機中,所有的資料都是存放在儲存器中的。一般把儲存器中的乙個位元組稱為乙個記憶體單元,不同的資料型別所占用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等,在前面已有詳細的介紹。為了正確地訪問這些記憶體單元,必須為每個記憶體單元編上號。根據乙個記憶體單元的編號...

理解C 的指標

本文是新手零基礎學習c 對指標 陣列和結構的理解和筆記,有些凌亂和語無倫次,只是將想法記錄下來,在以後忘了或者概念不清的時候看看。如理解有誤,敬請各位請前輩不吝指教,不勝感激。在c 基礎教程中指標一般被定義為 存放位址的變數。我們可以把指標變數看做乙個向量,它有大小 sizeof 運算子可查位元組 ...