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

指針知識(三):指針與數組,指針知識數組

編輯:C++入門知識

指針知識(三):指針與數組,指針知識數組


數組的概念與指針的概念聯系非常解密。其實數組的標識相當於它的第一個元素的地址,如:int a[5],數組名a指向它的第一個元素a[0]的地址。

有語句如下:

int  a[5];
int * p;

 

 

下面的賦值為合法的:

p = a;

這裡指針p 和a 是等價的,它們有相同的屬性,唯一的不同是我們可以給指針p賦其它的數值,而a 總是指向被定義的5個整數組中的第一個。所以,p只是一個普通的指針變量,而與之不同,a 是一個指針常量(constant pointer),數組名的確是一個指針常量。因此雖然前面的賦值表達式是合法的,但下面的不是:

a = p;

因為a 是一個數組(指針常量),常量標識不可以被賦其它數值。

由於變量的特性,以下例子中所有包含指針的表達式都是合法的:

#include <iostream>

using namespace std;

int main()

{

int a[5];
int *p;
p = a;      //p是a[0]的地址,因a指向a的首地址,即指向a[0],
*p = 10;    //即a[0]=10
p++;
*p = 20;      //a[1]=20
p = &a[2];
*p = 30;      //a[2]=30;
p = a +3;
*p = 40;      //a[3]=40
p = a;
*(p+4) = 50;   //a[4]=50

for(int n=0; n<5; n++)
{
cout<<a[n]<<", ";
}
cout<<'\n';

}

 
輸出:10, 20, 30, 40, 50,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

括號[]來指明我們要引用的數組元素的索引(index)。中括號[]也叫位移(offset)操作符,它相當於在指針中的地址上加上括號中的數字。

例如,下面兩個表達式互相等價:

a[5] = 0; // a [offset of 5] = 0
*(a+5) = 0; // pointed by (a+5) = 0

不管a 是一個指針還是一個數組名, 這兩個表達式都是合法的。

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