C語言難點專題 陣列和指標

2021-05-12 09:53:39 字數 1146 閱讀 8966

陣列和指標是c中常見的資料結構,和基本型別不同,這兩個資料結構可以表示多個資料的集合。

在理解和區分這兩個概念前,先了解一下記憶體模型。

記憶體就相當於街道兩邊的房子,記憶體位址,就是房子的門牌號。記憶體和房子一樣,可以存放需要的資料。

現在問題就來了, 怎麼描述一排排的房子【記憶體資料】呢?

這裡有兩個方案,第一種,就是陣列,第二種,就是指標。 這兩個東東用來描述「連續且有相同結構的記憶體資料」。

這兩種資料的共有特點是:

1. 表示一列的連續相同的記憶體資料。【陣列用下標的方式, 而指標用前後移動的方式】

2. 鑑於第一點,可以通過遍歷的方式來訪問。

先看陣列: 

陣列相當於不可變的一塊區域, 不可變,是指,一旦劃分好了, 就不能再增加數目進去, 也不容許它更換名稱。

【說明:】陣列是劃分好的儲存區域,  不容許位址遷移。

比如: 

int a =;

a = b; //更改了名稱, 這是不允許的。即不容許位址遷移

這個可以比方乙個樓層的房子,  a棟101, a棟102, a棟103. 這個劃分的區域是沒法修改的, 是乙個標準資訊儲存空間, 如果你將a棟變成了b棟的內容,整個社群將徹底亂套,原因是:陣列的作用是將位置固定。 方便找到儲存位置。

再看指標:

需要說明的是,指標並沒有劃分乙個區域儲存資料,其作用是,對已經劃分好的資料區域進行索引。 這個就類似花名冊, 黑板報, 他並沒有實際內容, 只是乙個索引記號,通過記號,來操作儲存其上的資料。

以傳達室的黑板為例,今天可以寫a101來了一封新, 明天可以寫b102欠費資訊, 擦除重寫,一切都ok. 人們可以通過這個黑板資訊查到具體事情發生的地理位置【是a101還是b103】,  由指標的歷史地位決定,它的作用是: 通過指向乙個具體的儲存位置, 從而讓儲存的內容產生作用。

int *p = mena;

p = menb;

上面就是乙個指標的更替的例子.  指標p儲存的都是乙個位址, 也就是索引.

在c語言中,函式的引數中存在陣列的話,會將其低俗為指標, 所以在函式中,看不到陣列, 看到的只是指標【這個有點寂寞】。尋根究底的話: 原理是: 傳參的時候, 引數要複製, 但是為了效率,設計c的時候,不可能讓你把記憶體給複製一遍,所以只能轉為指標進行處理。

C語言難點專題 預定義

c 語言型別定義粗略分為兩塊 第一 符號替換型別 define 第二 型別替換 typedef 第一種致命 是無所不能的代替作用,這裡是裸替,直接替換,比如章子怡同學不願被剝光,就請邵小珊同學裸替一下,技術含量相當不高,乙個肉身替換為另乙個肉身。include define globalvalue ...

c陣列與指標難點

include stdafx.h include using namespace std int tmain int argc,tchar argv ptr2是乙個指向 int 的指標,即ptr2的型別和 ptr是一樣的,注意 ptr指向的記憶體區域不定長 int ptr2 3 ptr3是乙個指向 ...

c語言難點 指標篇

相信有很多小夥伴們都入過坑,其實吧,只要多看幾遍,大家都應該能理解,但是呢?我在這裡直接給你們省去了多看幾遍的步驟,如果覺得我寫的不錯的話,點讚收藏一下,如果能給我一點鼓勵的話 算了,我會害羞的,哈哈!廢話不多說,指標呢其實就是乙個資料型別,你把它跟其它型別一樣理解就行了,那麼它所定義的變數跟一般的...