91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c++的變量怎么用

發布時間:2022-01-17 14:21:15 來源:億速云 閱讀:138 作者:iii 欄目:大數據

今天小編給大家分享一下c++的變量怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

變量名:程序員給地址取的外號

上學的時候,老師講變量是存在內存中的,內存就像一排排抽屜組成的,每個抽屜上面有個編號,我們定義一個變量,就是把想放的東西放到這個對應編號的抽屜里。比如: int a = 10,用圖來表示下:

c++的變量怎么用

這里:變量的名字叫 a ,變量的值是:10,變量的地址是:0x 00000001
那么問題來了,變量的值我們知道是放在了抽屜里(內存中),每個抽屜有編號(地址),但是變量的名字 a 存放在哪里呢?或者說它會存在于內存中嗎?

大家想一個問題,如果變量的名字要存放在內存中,那么肯定分配一個空間給它,保存它的空間有個地址,這個地址是不是又得有個地方存起來程序才能找到?如果真是這樣設計,那么代碼根本沒發寫、無法運行了。

其實變量名僅僅是寫給程序員看的,讓我們寫代碼的時候知道這個變量有什么用,能夠通過名字調用變量的值。因為如果直接給你一個地址 0x 23004123,你知道這是要干嘛嗎?代碼經過編譯后,最終都會轉換成機器碼,我們定義的變量名就都不存在了,存在的只有地址跟值。

指針其實很普通

有了上面的理解,再來一個特殊的變量:指針變量。什么叫指針變量呢?其實就是這個變量里邊存放的是一個變量的地址,通過這個地址,機器可以找到對應變量的值,例如:int * pa = &a,就表示變量 pa 抽屜里放的是 a 的地址,它的類型是:int*,繼續看圖:

c++的變量怎么用

這里需要重要說明的是:指針pa與a的關系是:a抽屜里邊放的是變量值10,pa放的是變量的地址:0x00000001,這里一定要記住,下面說引用的時候才更容易理解。

引用就是變量的另一名字

繼續談引用,引用與指針我們經常傻傻分不清,因為它們的行為確實非常詭異,看起來效果非常相似,看代碼:

由于引用的概念是在 c++ 中引入的,因此下面的代碼使用c++,僅僅是一些打印而已,放心看下去

int main() {
   int a = 10;// 變量    int * pa = &a; // 指針    int & b = a; // 引用    printf("a: %d\n", a);// a: 10    printf("*pa: %d\n", *pa);// *pa: 10    printf("b: %d\n", b);// b: 10    *pa = 20;
   printf("a: %d\n", a);// a: 20    printf("*pa: %d\n", *pa);// *pa: 20    printf("b: %d\n", b);// b: 20    b = 30;
   printf("a: %d\n", a);// a: 30    printf("*pa: %d\n", *pa);// *pa: 30    printf("b: %d\n", b);// b: 30    a = 40;
   printf("a: %d\n", a);// a: 40    printf("*pa: %d\n", *pa);// *pa: 40    printf("b: %d\n", b);// b: 40    return 0; }

通過上面的代碼我們發現,指針與引用都能達到一個效果:都有能力修改a的值,指針前面講過了,因為它保存了a的地址,通過解引用操作后,實際上就是打開了a的抽屜,因此可以進行修改。那么引用又是怎么辦到的?這里注意一個細節:*pa = 20; c = 30;a = 40。我們看到操作c的時候與操作a是一樣的方式:直接使用變量名,但是pa要想改變a的值,必須進行 *pa 操作(解引用),如果直接 pa=20,這僅僅是改變的pa的值,讓他指向了另外一個地址。

為什么引用與變量是一樣的操作方式?先來看一下引用的定義:

引用就是某一變量的一個別名,對引用的操作與對變量直接操作完全一樣。

那么別名是什么意思呢?

c++的變量怎么用

看到了吧?a就是b,b就是a。系統并不會為引用額外分配空間進行存儲,甚至可以簡單理解為:這個別名僅僅是為了給程序員看的,到機器碼層面的時候,他們都會變成地址:0x 00000001。

有碼為證

通過上面的分析不知道你理解了幾分?或者你是不是對指針與引用還是半信半疑?沒關系,寫點代碼證明一下即可,我們要證明的是:

  • 引用是變量的別名,那么它的地址應該與變量一致;

  • 指針保存的是變量的地址,那么它的值是變量的地址,它自身的地址與變量不同。

為了證明,程序設計如下:定義一個變量,分別賦值給指針、引用,然后檢查他們對應的值與地址。

int main() {
   int a = 10;
   printf("%d\n", a);
   printf("%p\n", &a);
   
   printf("~~~~~~~~~~~~~~\n");
   int * b = &a;
   printf("%p\n", b);
   printf("%p\n", &b);
   
   printf("~~~~~~~~~~~~~~\n");
   int & c = a;
   printf("%d\n", c);
   printf("%p\n", &c);
   
   return 0; }

獲得輸出:

10 // 變量a的值
0x7ffee3c7a768 // 變量a的地址
~~~~~~~~~~~~~~
0x7ffee3c7a768 // 指針的值,是變量a的地址
0x7ffee3c7a760 // 指針變量自己的地址
~~~~~~~~~~~~~~
10 // 變量a的值
0x7ffee3c7a768 // 引用變量c的地址,與變量a的地址完全一樣

在上面如果指針想要打印變量a的值,需要解引用操作:printf("%d\n", *b);

小結

  • 變量由三分部分構成:變量名、變量值、變量地址;

  • 變量名實際上只是給程序員看的,編譯后的代碼中并不存在變量名;

  • 指針變量就是一個變量存儲了另外一個變量的地址,系統也會為他分配內存空間來存儲這個地址;

  • 引用實際是變量的別名,他跟變量有相同的地址。

以上就是“c++的變量怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

宁城县| 宁夏| 湘西| 阜南县| 安义县| 长白| 潮州市| 高安市| 新乐市| 静安区| 名山县| 元氏县| 封丘县| 永昌县| 禹州市| 中牟县| 光山县| 长寿区| 都江堰市| 临夏市| 英超| 永济市| 嘉义县| 岳普湖县| 阿克苏市| 囊谦县| 黄梅县| 尤溪县| 财经| 新邵县| 济源市| 怀安县| 边坝县| 柳江县| 轮台县| 郎溪县| 加查县| 台中县| 呼伦贝尔市| 南安市| 宁阳县|