c語言之一維指標的理解和應用

2021-10-06 10:28:18 字數 1496 閱讀 8527

我們通常說的指標其實應該叫做指標變數,是一種用來 獲取 和 儲存 其他變數的位址的變數。其他變數可以是 :整形,字元型 ,指標型 型別,結構體型別。 簡而言之,指標給我們提供一種訪問位址的方式。也就是可以視為 :指標 就等價於 位址。

對於乙個新的名詞來說明白這個新東西的作用是十分重要的,我們可以用它簡化很多操作。那麼指標有什麼用呢?

1.因為通過指標訪問變數位址很容易,而變數的位址和計算機的記憶體空間是密切相關的,所以我們可以通過指標來管理程式記憶體的申請和釋放。這個在使用鍊錶的相關操作時會用到很多。

2.對於同乙個變數可以通過不同的指標去訪問同乙個變數。

3.對於更改運算元的值可以通過變數名和指標去修改。

4.鏈結的功能(資料結構中的靈魂之一另乙個靈魂是結構體)

因為在上面我們已經說了,指標的型別也有以上的這幾種,所以同型別的指標只能和同型別的變數相對應。

例如: char a,*p;

int b;

只能夠:p=&a;

不能:p=&b;

因為他們的型別是不匹配的,會報錯提示指標的型別和變數型別不匹配。所以把指標型別和變數型別弄成一致是重中之重,不可忽略。

1.改值:
#include

intmain()

讀者可以試一下:

例項執行結果:

1.指標之間要互異 也就是不能定義兩個相同的指標變數。(名稱相同)

2.當需要用到多個指標時,可以考慮採用陣列指標

3.對於指標的移動時是按照變數的位元組數移動。

比如:int a=;

int *p;

p=&a;

++p;

其中++p的移動也就是一次移動乙個int的位元組大小(4位元組)

也就是如果 p=000000000062fe04;(16進製制)

那麼++p之後的位址是 p=000000000062fe08

如果是:

char s=「1234567」;

char *q;

q=s; //這裡不用&s的原因是,字串中的字串的名字就代表這個字串的首位址 s等價於s[0]等價於q;

這裡如果用 q++;//++p 和 p++ 在單獨使用的時候沒有區別

那麼就是每加一次就移動乙個char型的大小(1個位元組);

也就是如果 q=000000000062fe04;(16進製制)

那麼++p之後的位址是 p=000000000062fe05

C語言之一維陣列

在工作中又遇到和陣列,指標有關的 了,我看的有點懵,但是我明白陣列和指標肯定是擁有完全不同的特徵的。先從陣列下手吧,好好回顧一下,查漏補缺。下面定義乙個陣列。int num 3 我們大多數時候都會使用到陣列名。但是你真的清楚陣列名是什麼型別嗎?首先,num 1 毫無疑問是int型別,那麼num是什麼...

c語言之指標陣列理解一

直接給出demo和記憶體圖進行分析 列印指標陣列 這裡為什麼要定義為二級指標 首先,陣列本身就是乙個一級指標,在加上定義的是指標陣列,也就是儲存的資料是指標,所以是二級指標 void printarrydata char arry,int cnt 對指標陣列進行排序 void sortarrydat...

C語言 之 指標初步理解

c語言之指標 指標是c語言的靈魂所在,也為程式設計師提供了一種訪問變數位址的方式。那啥是指標?指標就是變數的位址,說白了就是這個變數儲存在哪個位置,你可以通過指標檢視,所以學習指標記住一句話 指標就是位址。例如 int number int pointer a 這是一種把變數位址賦給指標的方法 第二...