指針和數組

A,指針的定義初始化和使用數組

定義:指針

type *name; //int *p;對象

初始化:ip

type *name =  &obj //string *name = str1;string

避免使用未初始化的指針,若是必須分開指針和其指向的對象,應將指針初始化爲0;編譯

初始化和賦值操做的約束ast

對指針的初始化只能使用一下四種類型的值引用

1,0值常量表達式,例如在編譯時可得到0值的整型const對象或者字面值常量0error

const int c_ival = 0;co

int *pi = c_ival;

int *pi2 = 0;

2,類型匹配對象的地址

3,另外一對象以後的下一地址

4,同一類型的另外一個有效指針

使用:&引用操做符 *解引用操做符

string s("hello world");

string *sp = &s;

cout << *sp

 

B,指針和引用的比較

指針和引用均可以間接訪問另外一個值,但引用老是指向某個對象,引用沒有初始化是錯誤的。對引用的修改的是該引用所關聯的對象的值,而並非使引用和另外一個值相關聯。引用一初始化,就始終指向同一個特定的對象。

int ival = 1024 , ival2 = 2048;

int *pi = &ival,*pi2 = &ival2;

pi = pi2 //如今pi指向ival2了

 

int ival = 1024, ival2 = 2048;

int &ri = ival,&ri2 = ival2;

ri = ri2 // ival的值和ival2的值相等了

C:指針和數組的關係

在表達式中使用數組名是,該名字會自動轉換爲指向數組的第一個元素的指針

int ia[] = {0,2,4,6,8};

int *ip = ia //ip 指向 ia[0]

1,指針的算術操做

指針加上或者減去一個整型數值n等效於得到一個新的指針,該新指針指向指針原來指向的元素以後或以前的第n個元素。

int ia[] = {0,2,4,6,8};

ip = ia;

int *ip2 = ip+4; //ia[4]

int *ip3 = ip2-2; //ia[2]

int *ip4 = ip3+10 //error

ip3-ip2 //-2

2,解引用和指針算術操做之間的相互做用

int last = *(ia + 4); //ok,last equel the value of ia[4];

相關文章
相關標籤/搜索