指標和陣列在不少地方可以互換使用,但兩者並不等價。陣列名對應著(而不是指向)一塊記憶體,其位址和大小在生命週期內保持不變,只有陣列的內容可以改變;而指標變數則是乙個變數,它可以存放任意相同資料型別變數的位址值,可以隨時指向其他記憶體塊,所以指標比陣列更加靈活。
預防指標錯誤方法:
一般指標:
(1)宣告指標時一定要初始化,如不初始化就將其置為null,否則該指標會指向乙個不確定的地方。
(2)delete指標以後,一定要將其置為null。
(3)當指標指向陣列時,謹防指標操作越界。
(4)避免指標指向乙個已經消失的區域性變數。
對於動態記憶體指標:
(5)指標消亡了,並不表示它所指向的動態記憶體會被自動釋放。
(6)動態記憶體被釋放了,並不表示指向該動態記憶體的指標會消亡或自動變成null指標。
下面通過例子詳解指標陣列區別:
//程式1 :指標和陣列區別。
#include
using
namespace std;
//測試函式
void main(void)
//複製指標所指向的字串的方法
int len=strlen(b);
char *p2=new
char[len+1]; //+1用來存放'/0'
if(null==p2)
strcpy(p2,b); //不要用p2=b,如這樣用,則只是p2指向了陣列b而已,而剛才p2用new申請的那一部分記憶體空間則洩露了
if(0==strcmp(p2,b)) //不要用if(p2==b),那樣只能判斷p2是否指向b
delete p2;
p2=null;
//字元指標變數的長度和該指標所指向的字串的長度的區別
char d="hello world"; //d是乙個陣列。其空間大小是陣列的空間大小
char *p3=d; //p3只是乙個指標變數,其大小只是變數本身的大小
cout tello world hello hello124 press any key to continue 陣列的本質 陣列是一段連續的記憶體空間 陣列的空間大小為sizeof array type array size 陣列名可看做指向陣列第乙個元素的常量指標 問題思考 1.a 1的意義是什麼?結果是什麼?2.指標運算的意義是什麼?結果是什麼?示例 include int main int p null... 有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向... 理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...指標和陣列對比分析
指標陣列和陣列指標
指標陣列和陣列指標