c語言利器 指標

2021-08-19 21:55:33 字數 2417 閱讀 6636

在c&c++裡面指標是很重要的,也是較難理解的。指標的用法非常靈活 ,下面通過具體的例子來說說指標的常見的用法。

指標介紹: 

在高階語言中,指標有效地取代了在低階語言,如組合語言與機器碼,直接使用通用暫存器的地方,但它可能只適用於合法位址之中。指標參考了儲存器中某個位址,通過被稱為反參考指標的動作,可以取出在那個位址中儲存的值。

還是通俗點,打個比喻 :假如你有一把鑰匙,但你不知道該鑰匙對應的是哪一戶人家?你自然有他也做不了什麼。但是當有個人高數你說,這鑰匙是李四家的 。你按照指引路線找到李四家後。你想想可以幹什麼呢 ?我是不是只要開啟了門 ,李四家的東西我是不是可以隨意拿取(危險性也明了吧)。指標就類似指引,指引有了接下來的就只是用鑰匙開啟門取用罷了。

指標常用分析:

1、指標指向變數:

**塊:

/**

@指標用法

@author lfb

*/#include#include#include#include#define num_size 50

using namespace std;

void swap(int x,int y)

int main()

最後輸出的結果還是a = 2,b =3。因為在函式呼叫時,實參和形參之間只是值傳遞。但我們使用指標結果就不一樣了。

void swap(int *x,int *y)

int main()

輸出結果a=3,b=2。變數a和b的值發生了交換。這是因為我們利用指標訪問變數的儲存單元,間接修改變數的值。

2、指標指向陣列:

定義乙個陣列並初始化,int array[4]=,定義乙個指標變數並把陣列的位址賦給它,int *p=array,注意陣列名就是陣列的位址,而且陣列的位址就是首元素的位址。因此我們的指標變數就指向了陣列的首元素,*p = 1。如果把*(p+1),那麼指標變數就指向了陣列的下乙個元素2,注意p+1與*(p+1)不同, p+1表示第乙個元素值加1。因此我們可以利用指標來遍歷陣列的各個元素:

void print()

; int *p = array;

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

return 0;

}

3、指標指向字串:

我們都知道用陣列儲存字串,如char name[20]="abc",上面已經簡單講述了指標指向陣列,所以我們可以這樣做,char *name="abc",指標變數指向字串的首個字元並可以依次訪問字串的各個字元。

void print()

int main()

上面**塊裡語句(*p)(a,b)可以用p(a,b)來代替,因為p和sum就是一樣的,只是用前者可能更容易理解一點。而我們要知道怎樣定義乙個指標指向函式,

int (*p)(int,int)這是固定寫法。指標指向函式用起來確實有點抽象。

5,指標指向結構體:

我們首先首先定義乙個結構型別,

typedef struct stu

stu,*stu;

/**

@指標用法

@author lfb

*/#include#include#include#include#include#define num_size 50

using namespace std;

typedef struct stu

stu,*stu;

int main();

cout定義乙個指標指向結構體型別s,struct student *p;把結構體變數s的位址賦給指標變數p,p=&s;我們可以有3種方式來訪問結構體中的屬性:

stu.ages=15; (*p).ages=15; p->ages=15;不過第三種方式在c語言中只能用來指向結構體。

6,還介紹下二級指標:二級指標又分為指向指標變數的指標和指向陣列的指標。二維陣列經常用。

** :

/**@二級指標的使用

最後:使用指標,如果僅指向某個變數,則無需分配記憶體。否則必須初始化,分配記憶體。當然分配了記憶體,最後記得釋放記憶體。

多執行緒的利器 C 智慧型指標

c 給程式人員提供很多的權力,自然也就要完成很多的任務。最典型的就是c 的記憶體沒有自動 機制,所以要求程式設計師每次new delete,不匹配則容易造成記憶體洩漏。因此c 引入智慧型指標,是raii 利用的就是c 構造的物件最終會被銷毀的原則。raii的做法是使用乙個物件,在其構造時獲取對應的資...

C語言指標

指標變數是包含記憶體位址的變數,它指向記憶體中的一塊區域,通過指標的值,可以間接訪問到相應的記憶體單元的資料,並做相應的修改。1 指標的定義和簡單使用 定義乙個指標變數和定義一般的變數類似,只需在變數名前面加乙個 對乙個指標變數賦值可以用取位址符 來獲取到乙個變數的位址,如果要獲得指標指向的記憶體區...

C語言指標

1 定義指標變數void change int n 格式 變數型別 變數名 定義了乙個指標變數p 指標變數只能儲存位址 指標變數p前面的int 指標變數p只能指向int型別的資料 int main void change int n 2 指標與陣列 陣列名其實質是乙個指標,但是它和普通的指標變數還是...