C 中的指標和引用

2021-10-01 19:19:31 字數 2733 閱讀 7946

文章中舉了大量的例子,希望讀者可以耐住性子好好讀一下,相信會對指標和引用有底層的了解。

1. 指標

2. * 作用:1.宣告指標變數;2.表示指向(取出對應的普通型變數的值)。

3. 舉例:

例項一:

**:

#includeusing namespace std;

int main()

控制台輸出結果:

指標變數point的值:0x69fef8

指標變數point2的值:0x69fef8

number變數的值:1234

指標變數point所指向的普通變數的值:1234

指標變數point2所指向的普通變數的值:1234

解釋:可以看出:

1.指標變數point中存放的值是它所指向的普通變數number的記憶體位址。也就是說,指標變數point的儲存空間中存放的值是乙個位址。這個位址是它所指向的普通變數的記憶體位址。

2.普通變數number的值可以通過它對應的指標變數point來獲得。

3.但是point的記憶體位址不是它指向的普通變數的記憶體位址,這一點容易混淆。

例項二:

**:

#includeusing namespace std;

typedef struct nodenode;

void f(node *node3)

int main()

控制台輸出結果:

node1:  87654

node2: 9999

head: 87654

head2: 9999

例項三:

**:

#includeusing namespace std;

#define max 4

int main()

}b = a[3]; //把陣列第四行的首位址賦值給指標變數b。

for(i=1;i<=3;i++)

控制台輸出結果:

number變數的值(變數):4321

引用變數refer的值:4321

引用變數refer2的值:4321

number變數的值(變數):5678

引用變數refer的值:5678

引用變數refer2的值:5678

解釋:可以看出

1.普通變數和它對應的引用變數共用同一塊記憶體空間。可以把引用變數refer視作是普通變數number的別名,名稱不同,但是記憶體位址相同。refer和number的值是相同的。

2.refer值的改變會引起number值的改變。

3. 指標和引用的區別

1. 引用在定義的時候必須要初始化。指標可以先宣告再初始化。

2. 引用的值不可修改。指標的值可以修改。

3. 引用不可為空,必須連線乙個記憶體位址。指標可以為空(null)。

錯誤示例:

int number = 4321;

int &refer;

refer = number;

錯誤資訊:error: 'refer' declared as reference but not initialized (這個引用沒有被初始化)。

正確示例:

int number = 4321;

int number2 = 5678;

int &refer = number;

refer = number2; //變數的值之間的賦值

cout << "number變數的值(引用refer):" << refer << endl;

cout << "number變數的值(number):" << number << endl;

輸出資訊:

number變數的值(引用refer):5678

number變數的值(number):5678

4.結構體

1. 我們主要討論幾種常見的形式。

typedef struct nodethreadnode,*threadtree;
2. 用以上的結構體宣告變數

threadnode node1;

node1.data = 9999;

threadnode *node2 = (threadnode *)malloc(sizeof(threadnode));;

node2->data = 8888;

node2 = &node1; //node2暫時性的連線node1的記憶體位址

node2->data = 7777; //node2的值改變node1的值也改變。

threadtree tree1 = (threadtree)malloc(sizeof(threadtree));

tree1->data = 1111;

threadtree &tree2= tree1; //引用型別,tree2永遠連線tree1的記憶體位址

tree2->data = 2222; //tree2改變tree1也改變

cout<< "node1: " node1: 7777

node2: 7777

tree1: 2222

tree2: 2222

C 中的指標和引用

注意本人的部落格都遷移到本人自己搭建的部落格位址,通過此處可檢視。本人在工作之餘學習c 但是可能在訓練過程種,會通過各種刷題的形式去提公升自己,但是這樣在一些公司 尤其是大廠 面試的時候會很尷尬。而c 種的指標和引用有什麼區別和聯絡呢,現在就來說道說道,如有錯誤,敬請大家指正。首先我們來說道說道指標...

c 中的指標和引用

首先 指標是儲存的變數的位址,引用是變數的別名,這個必須記住 單純的給變數取別名沒有任何的意義,作為引數傳遞,能保證引數傳遞過程中不產生任何的副本 引用可以直接操作變數,但指標的話必須通過 p 間接的操作變數,指標可讀性行比較低 引用必須要有初始值 int a 常量必須要有初始值 const int...

c 中的引用和指標

參考回答 定義 1 引用 c 是c語言的繼承,它可進行過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。引用就是c 對c語言的重要擴充。引用就是某一變數的乙個別名,對引用的操作與對變數直接操作完全一樣。引用的宣告方法 型別識別符號 ...