C++學習筆記(五)--指針、NULL、引用

1. C++中已經定義了NULL為0:#define NULL 0
指針p可以指向空值NULL即 p = NULL;表示該指針變量不指向任何變量。

  注意:指針未初始化與指針為NULL不同,
  p = NULL;是有值的,為0;
  而在定義時:int *p;這時候碎雖然未對p初始化,但不代表p無值,而是此時的值是一個無法預料的值,p可以指向任何一個 未指定的單元,這是非常危險的,所以在引用指針變量之前必須對其初始化。

任何指針變量都可以與NULL做 = 與 != 比較;


補充知識:

2.兩個指針指向同一個數組可以比大小,指向前面元素的指針變量小于指向后面元素的指針變量。

3.對不同類型的指針賦值要強制轉化:
  int *p1;
  char *p2;
  float *p3
  p1 = (int *)p2;
  p2 = (char *)p3;

4.引用:為變量起一個別名,不適用于指針和數組。
  int a;
  int &b = a;/*表示b就是a,占用同一存儲單元,只是名字不一樣而已,即b具有a的地址,在聲明引用時,必須同時初始化,b這個別名被使用后,不可在作為別的變量的名稱。如 int &b = c; */

  引用可以作為函數參數,當實參傳遞給形參時,就相當于為變量起了一個別名,在被調函數中,變量的別名的值別改變了,則函數外部對應的原變量也改變了,因為它們使用同一存儲空間,使用同一地址,這彌補了C中函數參數只傳值的不足(傳指針也是傳指針
的值)。
#include<iostream>
using namespace std;

int main(){

  void swap( int & , int & );//&是引用,不是取地址
  int i = 1, j = 2;
  swap( i,j );
  cout <<"i=" <<i <<endl <<"j=" <<j <<endl;
  return 0;
}

void swap( int &a, int &b ){ /*調用到次函數時,實際上是把i的地址賦給a,j的地址賦給b,這時候a,b分別是i,j的別名,當函數內部的值改變了,自然而然的外部的值也改變了 ==》這就是 地址傳遞方式《==*/

  int temp;
  temp = a;
  a = b;
  b = temp;
}
  注意和指針區別:指針是要單獨開辟內存空間來聲明指針變量的,而引用不用。

  引用可以代替指針完成很多工作。

轉載于:https://www.cnblogs.com/ysys/p/5689824.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254861.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254861.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254861.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Sort函數的用法

快速排序sort的用法&#xff1a;&#xff08;適用于int float double char 。。。&#xff09; 記得加頭文件&#xff01; 記得加頭文件&#xff01; 記得加頭文件&#xff01; 頭文件&#xff1a; #include <algorithm> using namespace std ; // 兩行都要寫 數組排…

crf與bitrate對照表

crf與bitrate對照表 (2011-06-21 17:45:59)一些關于crf的備忘&#xff1a; 1、相較于bitrate方式&#xff0c;cpu占用與內存占用均會下降&#xff1b; 2、銳化濾鏡會讓crf的碼率上升&#xff1b; 3、vbv對crf依然有效&#xff1b; 4、crf18就接近無損&#xff0c;字幕組慣用20-…

秒殺多線程第三篇 原子操作 Interlocked系列函數

上一篇《多線程第一次親密接觸 CreateThread與_beginthreadex本質區別》中講到一個多線程報數功能。為了描述方便和代碼簡潔起見&#xff0c;我們可以只輸出最后的報數結果來觀察程序是否運行出錯。這也非常類似于統計一個網站每天有多少用戶登錄&#xff0c;每個用戶登錄用一個…

Vue 教程第九篇—— 動畫和過度效果

過渡效果 SPA 中組件的切換有一種生硬的隱藏顯示感覺&#xff0c;為了更好的用戶體驗&#xff0c;讓組件切換時淡出淡入&#xff0c;Vue 提供了專門的組件 transition。 過濾效果應用場景 條件渲染 (使用 v-if)條件展示 (使用 v-show)動態組件組件根節點過渡狀態 enter&#xf…

halcon create_ocr_class_svm 使用SVM分類器創建OCR分類器

目錄create_ocr_class_svm&#xff08;算子&#xff09;描述參數create_ocr_class_svm&#xff08;算子&#xff09; create_ocr_class_svm - 使用支持隨機向量機制創建OCR分類器。 create_ocr_class_svm&#xff08;:: WidthCharacter&#xff0c;HeightCharacter&#xff0…

碼率跟視頻質量有關系

碼率跟視頻質量有關系.首先要清楚, 相同的視頻編碼方式下, 碼率越高肯定畫面越清晰. 但是高到一定值, 再往上的畫面改善程度就不明顯了, 只會增大文件體積. 所以碼率選的合適, 才可以保證清晰度又保持文件不會太大. 個人經驗如果是h.264編碼(當前最好的視頻壓縮編碼方案), …

SQL 字符串分割表函數

1 --字符串分割表函數2 declare str varchar(1000)3 declare split varchar(10) 4 5 declare i int;6 declare count int;7 8 declare ChildStr varchar(1000);9 declare splitStr varchar(1000); 10 declare Index int; 11 12 declare table as table (rowId int,splitStr va…

語句:分支語句、switch case ——7月22日

語句的類型包括&#xff1a;聲明語句、表達式語句、選擇語句、循環語句、跳轉語句、異常語句 1&#xff0e;聲明語句引&#xff1a;入新的變量或常量。 變量聲明可以選擇為變量賦值。 在常量聲明中必須賦值。 例如&#xff1a; int i 0;//聲明變量i 并賦值&#xff0c;也可以不…

halcon write_ocr_trainf 將訓練字符存儲到文件中

目錄write_ocr_trainf&#xff08;運算符&#xff09;描述參數write_ocr_trainf&#xff08;運算符&#xff09; write_ocr_trainf - 將訓練字符存儲到文件中。 write_ocr_trainf&#xff08;Character&#xff0c;Image :: Class&#xff0c;TrainingFile ? 描述 運算符w…

碼率計算文章

http://bbs.dvbcn.com/showtopic-41431-1.html

PostgreSQL Oracle 兼容性之 - INDEX SKIP SCAN (遞歸查詢變態優化) 非驅動列索引掃描優化...

標簽 PostgreSQL , Oracle , index skip scan , 非驅動列條件 , 遞歸查詢 , 子樹 背景 對于輸入條件在復合索引中為非驅動列的&#xff0c;如何高效的利用索引掃描&#xff1f; 在Oracle中可以使用index skip scan來實現這類CASE的高效掃描&#xff1a; INDEX跳躍掃描一般用在W…

如何確定鏡頭CCD靶面尺寸?

在組建機器視覺系統時&#xff0c;需要選用適合實際應用的產品。今天&#xff0c;中國機器視覺商城的培訓課堂為您帶來的是關于工業鏡頭CCD靶面尺寸的確定方法。 在選擇鏡頭時&#xff0c;我們通常要注意一個原則&#xff1a;即小尺寸靶面的CCD可使用對應規格更大的鏡頭&#x…

lua去掉字符串中的UTF-8的BOM三個字節

廢話不多說&#xff0c;還是先說點吧&#xff0c;項目中lua讀取的text文件如果有BOM&#xff0c;客戶端解析就會報錯&#xff0c;所以我看了看&#xff0c;任務編輯器swGameTaskEditor 在寫入文件的時候&#xff0c;也不知道為什么有的文件就是UTF-8BOM格式&#xff1b;但一般都…

JQuery對象與DOM對象的區別與轉換

1.jQuery對象和DOM對象的區別 DOM對象&#xff0c;即是我們用傳統的方法(javascript)獲得的對象&#xff0c;jQuery對象即是用jQuery類庫的選擇器獲得的對象; eg: var domObj document.getElementById("id"); //DOM對象var $obj $("#id"); //jQuery對象;…

halcon append_ocr_trainf 將字符添加到訓練文件中

目錄append_ocr_trainf&#xff08;算子&#xff09;描述參數append_ocr_trainf&#xff08;算子&#xff09; append_ocr_trainf - 將字符添加到訓練文件中。 append_ocr_trainf&#xff08;Character&#xff0c;Image :: Class&#xff0c;TrainingFile ? 描述 運算符a…

CCD 尺寸

CCD&#xff08;包括CMOS感光元件&#xff09;的面積是按其矩形對角線英寸長度為指標的。這和定義電視屏幕尺寸類似。一英寸是25.4毫米。1/2.0英寸、1/1.8都是指CCD 對角線有多少分之一英寸長&#xff0c;分母小的其分數值就大&#xff0c;相應感光元件面積也大。 1/2.…

Quagga的安裝碰到的問題

1.如果出現以下錯誤&#xff1a; vtysh: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: UP 解決方法如下: 1.rootlocalhost:~ # cd /usr/local/lib 2.rootlocalhost:/usr/local/lib# ls -la libreadline* 3.rootlocalhost:/usr/local/lib# mkd…

X264電影壓縮率畫質

X264電影壓縮率畫質全對比&#xff1a; http://www.mov8.com/dvd/freetalk_show.asp?id29778

halcon read_ocr_trainf 從文件中讀取訓練字符并轉換為圖像

目錄read_ocr_trainf&#xff08;算子&#xff09;描述參數read_ocr_trainf&#xff08;算子&#xff09; read_ocr_trainf - 從文件中讀取訓練字符并轉換為圖像。 read_ocr_trainf&#xff08;&#xff1a;Characters&#xff1a;TrainingFile&#xff1a;CharacterNames&am…

(十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源碼解析【下】

iptables用戶空間和內核空間的交互 iptables目前已經支持IPv4和IPv6兩個版本了&#xff0c;因此它在實現上也需要同時兼容這兩個版本。iptables-1.4.0在這方面做了很好的設計&#xff0c;主要是由libiptc庫來實現。libiptc是iptables control library的簡稱&#xff0c;是Netfi…