成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

EasyC++,C++指針初探

開發 后端
C++可以說是成也指針、敗也指針。依靠著指針,我們可以靈活地操控變量內存地址,實現很多獨有的功能。但也正因為指針,尤其是使用不當的時候會產生許多的問題。

[[431550]]

大家好,我是梁唐。

這是EasyC++系列的第15篇,咱們來聊聊C++中的指針。

想要追求更好閱讀體驗的同學,可以點擊文末的「閱讀原文」,訪問github倉庫。

指針初探

前言

C++可以說是成也指針、敗也指針。依靠著指針,我們可以靈活地操控變量內存地址,實現很多獨有的功能。但也正因為指針,尤其是使用不當的時候會產生許多的問題。導致許多工程師對于C++以及指針深惡痛絕,以至于C++之后的許多語言都摒棄了指針的設計,比如Java和Python。

我們先把頭疼的內容放一放,先從一些簡單的概念開始。

首先要明確的是指針是一個變量,它特殊的點在于雖然同樣是變量,它存儲的并不是值,而是一個內存地址。內存地址顧名思義就是存放在內存當中的位置,對于非指針的變量, 我們也可以使用&操作符去獲取它的地址。這就是為什么我們使用scanf在讀取變量的時候,需要在變量名之前加上一個&符號。

  1. int a; 
  2. scanf("%d", &a); 

目的就是為了將a變量的地址傳給scanf函數,從而將屏幕當中讀取到的內容填寫到a變量對應的地址當中。

我們也可以直接輸出一個變量的地址,但輸出結果是一個十六進制的數,代表一個內存位置。如果大家學過匯編或者是了解過底層的話,應該不陌生。這個輸出的結果是給機器看的,人類無法讀懂。

  1. int a; 
  2. cout << &a << endl; 

聲明和初始化

指針和普通變量不同,它存儲的值是地址。所以在聲明指針的時候,也會有一點細小的區別。我們通過*符號創建指針,*運算符稱為間接值(indirect value)或解除引用(dereferencing),現在理解這兩個概念可能有些費勁,沒關系我們可以先放一放。只許看記住使用*創建指針即可,*寫在類型和變量名中間,如:

  1. int * p; 

這樣我們就創建了一個int型的指針,它的名字叫做p。關于*的位置,有些人喜歡緊跟著變量類型,有些人喜歡緊跟著變量名。其實都可以,看個人喜好。傳統上來說C程序員喜歡后者,突出ptr是一個指針。

  1. int *ptr; 

C++程序員更喜歡前者,突出是一個int型的指針:

  1. int* ptr; 

這兩種都可以,對于編譯器來說沒有任何區別。但是要注意的是,每一個指針變量都需要一個*:

  1. int a, *ptr; 

前面說了,由于指針的值是一個地址,所以我們在對指針進行初始化或者賦值的時候,就需要用到取地址符。

  1. int a = 3; 
  2. int *p = &a; // 獲取了a的地址 

當我們有了指針變量之后,我們可以使用*來訪問它指向的內存地址的值。

  1. int a = 3; 
  2. int *p = &a; 
  3.  
  4. cout << *p << endl; //output: 3 

要注意的是,由于指針p指向a的地址,所以當我們通過*符號修改了p指向的值之后,a的值一樣會發生變化。

  1. *p = 5; 
  2. cout << a << endl; //output: 5 

 正因為指針有這樣的特性,所以使用的時候千萬小心……

本文轉載自微信公眾號「Coder梁」,可以通過以下二維碼關注。轉載本文請聯系Coder梁公眾號。

 

責任編輯:武曉燕 來源: Coder梁
相關推薦

2021-10-29 09:44:50

C++指針變量

2021-12-12 18:13:54

C++This指針

2021-10-26 00:19:51

C++結構體存儲

2021-11-09 10:38:16

C++Const指針

2021-10-21 18:52:00

C++數組存儲

2021-10-31 20:24:24

C++for循環

2021-11-10 10:48:36

C++函數指針

2021-12-29 20:31:40

C++多態指針

2021-11-26 00:03:20

C++編譯常量

2021-12-09 10:56:50

函數C++原型

2021-10-20 14:03:06

C++運算符類型

2021-11-01 15:35:31

C++自增自減

2021-12-08 10:43:09

C++實現

2021-12-10 10:45:36

C++函數Stock

2021-12-30 14:58:58

C++函數動態

2021-12-11 19:02:03

函數C++對象

2021-11-27 11:50:09

C++靜態持續

2021-10-28 19:27:08

C++指針內存

2021-10-26 15:36:17

C++枚舉值類型

2021-12-05 18:20:42

C++空間特性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩一区二区三区在线视频 | 成人一区二区在线 | 日本a∨精品中文字幕在线 亚洲91视频 | 一区二区影视 | 国产一区二区在线视频 | 福利成人 | 成人av电影天堂 | 激情欧美一区二区三区 | 午夜在线影院 | 日韩在线看片 | 91精品国产综合久久香蕉麻豆 | 免费中文字幕日韩欧美 | 在线色网 | 亚洲精品一二区 | 精品一二区 | 激情久久网 | 国产一区二区在线播放 | 日韩一区二区久久 | 在线视频91 | 久久香蕉精品视频 | 午夜在线| 性一交一乱一透一a级 | h片免费在线观看 | 日本一区二区在线视频 | 视频在线一区二区 | 自拍偷拍中文字幕 | 久久久久国产成人精品亚洲午夜 | 一区二区三区亚洲 | 亚洲国产精品一区 | 国产黄色在线观看 | 国产电影精品久久 | h视频免费在线观看 | 国产激情一区二区三区 | 噜噜噜色网 | 一区二区三区欧美在线观看 | 特黄色一级毛片 | a免费视频 | 亚洲精品视频在线播放 | 久久久国产精品入口麻豆 | 91国在线| 伊大人久久 |