西工大《C++程序設計》——(三)

第13講:數組的定義和使用

  1. 一維數組的定義、內存形式(連續存儲)、初始化。
  2. 靜態數組與動態數組的初始值。
  3. 二維數組的定義、內存形式(按行連續存儲)、初始化。
  4. 多維數組的引用。

第14講: 數組與函數

  1. 數組元素作爲函數參數。
  2. 整個數組作爲函數參數,傳遞的是數組的首地址,所以實參和形參爲同一個對象。
  3. 數組作爲函數參數時,編譯器不檢查數組的長度,因此將數組的首地址傳入函數時,常需傳入另一個參數來表示實參數組的長度。但是多維數組除第一維外其餘維數的長度不可省略,否則無法確定數組的基類型。

第15講:字符串的處理

  1. 編譯器在編譯字符串常量時自動在其末尾加上結束符'\0'
  2. 【字符串處理函數】
  3. 【字符串對象】:其類在string頭文件裏定義,字符串對象不需結束符\0,且採用動態內存管理,還會檢查內存越界。
  4. 字符串對象可用字符串常量直接進行賦值而不需調用字符串處理函數。
  5. 字符串對象的操作:賦值運算、連接運算、關係運算。

第16講:數組的應用

  1. 用數組解決排序問題:交換排序、選擇排序。
  2. 用數組解決查找問題:順序查找、二分查找。
  3. 【二分查找實例】:
#include <iostream>
using namespace std;
int BinarySearch(int A[], int n, int find){
	int low, upper, mid, result=-1;
	low = 0, upper = n-1;
	while(low<=upper){
		mid = low +(upper-low)/2;	// 可防止low+upper溢出
		if(A[mid]<find)
			low = mid+1;
		else if(A[mid]>find)
			upper = mid-1;
		else
			result = A[mid];	// result爲單一出口
	}
	return result;
}

第17講:指針的定義與使用

  1. 數據的寫入與讀出均與內存打交道,而指針類型就是處理內存地址的數據類型。指針不僅能提高程序的效率,而且能使一個函數訪問另一個函數的局部變量,因此指針是函數進行數據交換必不可少的工具。
  2. 程序中的數據對象在生命週期內總是佔用一定的存儲空間,有確定的存儲位置。按對象名稱存取對象爲直接訪問,通過指針存取對象爲間接訪問。
  3. 由於指針的特殊性,指針的初始化和賦值是受一定約束的,只能是以下四種值:
  • 0常量表達式
int a, z=0;
int *p1=a;	// 錯誤,地址初值不能爲變量
p1 = z;		// 整型變量不能作爲指針值,即使其值爲0
p1 = 4000; 	// 錯誤,整型數據不能作爲指針值
p1 = null; 	// 正確
p1 = 0; 	// 正確

  • 類型相同的對象的地址值
int a, *p1;
float b, *p2;
p1 = &a; 	// 正確
p1 = &bl;	// 錯誤
p2 = &b;	// 正確
  • 基類型相同的指針變量的值
  • 對象存儲空間的下一個有效地址
  1. 【指針的有效性】:指針指向有確定存儲空間的對象時爲有效指針,否則爲無效指針。
  2. 【無效指針】:0值指針(空指針);未初始化、未賦值或運算後指向未知對象的指針;指向對象被釋放後值卻未變的指針。
  3. 【指針運算】:指針作用在連續存儲空間上纔有意義,比如指針加減整數、同類型指針相減、指針間的關係運算。
  4. 【指針的限定】:
const int a=10, b=20;
const int *p;
p = &a;
p = &b;
*p = 12;	// 錯誤,*p是隻讀的
  • const修飾過的對象的地址賦給基類型無const修飾過的指針變量是錯誤的。
const double pi=3.14;
double *p=&pi;	// 錯誤,p非const指針
const double *ptr=&pi;	// 正確,ptr爲const型指針
  • 允許把非const對象的地址賦給(指向const對象的?)const指針,但不可通過const指針改變其所指的非const對象的值。const指針常用於函數形參以保護限定實參爲只讀,此舉可增加程序健壯性。
const double pi=3.14;
const double *p=&pi;	// 正確
double f=3.14;	// f爲非const對象
p = &f;	// 正確
f = 3.14159;	// 正確
*p = 3.141;	// 錯誤,無法通過const指針解引用來修改所指對象的值
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章