久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++指針數(shù)組和指向指針的指針

 pure_water 2013-12-04

一,、指針數(shù)組的概念

如果一個(gè)數(shù)組,其元素均為指針類(lèi)型數(shù)據(jù),該數(shù)組稱(chēng)為指針數(shù)組,也就是說(shuō),指針數(shù)組中的每一個(gè)元素相當(dāng)于一個(gè)指針變量,它的值都是地址?一維指針數(shù)組的定義形式為    類(lèi)型名*數(shù)組名[數(shù)組長(zhǎng)度];

例如
int *p[4];
可以用指針數(shù)組中各個(gè)元素分別指向若干個(gè)字符串,使字符串處理更加方便靈活?

例6.15 若干字符串按字母順序(由小到大)輸出?
#include
using namespace std;
int main( )
{
   void sort(char *name[],int n);                //聲明函數(shù)
   void print(char *name[],int n);               //聲明函數(shù)
   char *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″};  //定義指針數(shù)組
   int n=5;
   sort(name,n);
   print(name,n);
   return 0;
}
void sort(char *name[],int n)
{
   char *temp;
   int i,j,k;
   for(i=0;i<>
   {
      k=i;
      for(j=i+1;j<>
         if(strcmp(name[k],name[j])>0) k=j;
         if(k!=i)
            { temp=name[i];name[i]=name[k];name[k]=temp;}
   }
}

void print(char *name[],int n)
{
   int i;
   for(i=0;i<>
      cout<<><>
}
運(yùn)行結(jié)果為
BASIC
COBOL
C++
FORTRAN
Pascal


圖6.21                        圖6.22

print函數(shù)的作用是輸出各字符串?name[0]~name[4]分別是各字符串的首地址?print函數(shù)也可改寫(xiě)為以下形式:
void print(char *name[],int n)
{
   int i=0
   char *p;
   p=name[0];
   while(i<>
   {
      p=*(name+i++);
      cout<<><>
   }
}
其中“*(name+i++)”表示先求*(name+i)的值,即name[i](它是一個(gè)地址)?將它賦給p,然后i加1?最后輸出以p地址開(kāi)始的字符串?

二,、指向指針的指針

在掌握了指針數(shù)組的概念的基礎(chǔ)上,下面介紹指向指針數(shù)據(jù)的指針,簡(jiǎn)稱(chēng)為指向指針的指針?從圖6.22可以看到,name是一個(gè)指針數(shù)組,它的每一個(gè)元素是一個(gè)指針型數(shù)據(jù)(其值為地址),分別指向不同的字符串?數(shù)組名name代表該指針數(shù)組首元素的地址?name+i是name[i]的地址?由于name[i]的值是地址(即指針),因此name+i就是指向指針型數(shù)據(jù)的指針?還可以設(shè)置一個(gè)指針變量p,它指向指針數(shù)組的元素(見(jiàn)圖6.23)?p就是指向指針型數(shù)據(jù)的指針變量?

圖6.23

怎樣定義一個(gè)指向指針數(shù)據(jù)的指針變量呢?如下:
   char *(*p);
從附錄B可以知道,*運(yùn)算符的結(jié)合性是從右到左,因此“char *(*p);”可寫(xiě)成
   char **p;

例6.16 指向字符型數(shù)據(jù)的指針變量?
#include
using namespace std;
int main( )
{
   char **p;                //定義指向字符指針數(shù)據(jù)的指針變量p
   char *name[]={″BASIC″,″FORTRAN″,″C++″,″Pascal″,″COBOL″};
   p=name+2;                //見(jiàn)圖6.23中p的指向
   cout<<*p<    cout<<**p< }
運(yùn)行結(jié)果為
C++
C
指針數(shù)組的元素也可以不指向字符串,而指向整型數(shù)據(jù)或單精度型數(shù)據(jù)等?

在本章開(kāi)頭已經(jīng)提到了“間接訪問(wèn)”一個(gè)變量的方式?利用指針變量訪問(wèn)另一個(gè)變量就是“間接訪問(wèn)”?如果在一個(gè)指針變量中存放一個(gè)目標(biāo)變量的地址,這就是“單級(jí)間址”,見(jiàn)圖6.24(a)?指向指針的指針用的是“二級(jí)間址”方法?見(jiàn)圖6.24(b)?從理論上說(shuō),間址方法可以延伸到更多的級(jí),見(jiàn)圖6.24(c)?但實(shí)際上在程序中很少有超過(guò)二級(jí)間址的?

圖6.24
<>

<>



    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多