指標和陣列的對比

2021-04-19 19:17:51 字數 1136 閱讀 7259

指標和陣列在不少地方可以互換使用,但兩者並不等價。陣列名對應著(而不是指向)一塊記憶體,其位址和大小在生命週期內保持不變,只有陣列的內容可以改變;而指標變數則是乙個變數,它可以存放任意相同資料型別變數的位址值,可以隨時指向其他記憶體塊,所以指標比陣列更加靈活。

預防指標錯誤方法:

一般指標:

(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...