程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Essential C++ 學習筆記02--Array/Vector 與指針

Essential C++ 學習筆記02--Array/Vector 與指針

編輯:C++入門知識

Essential C++ 1.5-1.6節,3.1節筆記

Array/Vector/指針,難度偏大,

但若學習初期不熟悉基本用法,則難以寫出有效代碼。

1. 基本概念

  • Array 是一段連續內存,數組名就是指向首地址的指針。是內建數據結構,兼容 C。
  • Vector 可以理解為大小可變的數組,是一個類 class。

2. 指針的算術運算

指針可以進行自增(++), 自減(--), 加上一個整數(+, +=), 減去一個整數(-, -=)等算術運算。

在數組中使用頻繁。

指針存的是內存地址,+/- 1 時,並非簡單地加上或減去該整數值,而是加上該整數與指針引用的對象的大小的乘積。

這種實現方式的好處是,方便template模板編程。例如:ptr 指向數組的某個元素,ptr+1 就是下一個元素的地址(如果沒有越界的話)。

int 的長度是 4,int型指針+1,內存地址+4.

double 的長度是 8,double 型指針+1,內存地址+8.

代碼和執行結果如下:

View Code

執行結果:

2. Array

2. 定義 Array 時,尺度必須是常量表達式,建議使用 const 變量。

3. Vector 知道自己的大小,Array 卻不知道。個人理解:

  • Vector 大小可變,增加元素時需要判斷是否需要resize,所以,必須知道自己的大小。
  • Array 大小固定,運行前就知道,沒必要運行時再算一次。而且,增加Array數據結構本身的復雜性。

4. Vector 不能像 Array 一樣一次初始化多個變量(用{}括起),因為 Vector 是自定義 class,語法不支持。

Array 為何可以?

1. 指針的算術運算

 

 

Essential C++ 練習題

練習1.5

撰寫一個程序,使之能夠詢問用戶姓名,並讀取用戶所輸入的內容。

請確保用戶輸入的名稱長度大於兩個字符。如果用戶的確輸入了有效信息,就響應一些信息。

練習1.5 使用 C-style 字符串 練習1.5 使用 String 對象

 

練習1.6

撰寫一個程序,從標准輸入裝置讀取一串整數,並將讀入的整數依次置入 array 及 vector。

然後遍歷這兩種容器,求取數值總和,將總和及平均值輸出至標准輸出裝置。

 

分析:

1. 讀取一串整數,可選擇以字符串形式接收,或一個數字。

後者容易導致數據溢出,且需要反復轉換數據類型。

2. char 轉 int,直接減去 ASCII 的差值(48)即可。

3. 求和時,如果 Array 長度大於輸入數字的個數,則無需遍歷整個 Array 求和。

4. 求平均值時,不能直接用 int 除以 int。

Array 式的 Vector

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved