日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

char二维数组_C语言指针与数组详解

發(fā)布時間:2024/8/5 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 char二维数组_C语言指针与数组详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

指針與數(shù)組

指針可以與變量結合,也可以與數(shù)組結合使用。指針數(shù)組和數(shù)組指針是兩個截然不同的概念,指針數(shù)組是一種數(shù)組,該數(shù)組存放的是一組變量的地址。數(shù)組指針是一個指針,表示該指針是指向數(shù)組的指針。

1.指向數(shù)組元素的指針

int a[5]={1,2,3,4,5};

int *p=a; //int *p=&a[0];

如上代碼,指針變量p指向了a數(shù)組的首元素,其方法可有兩種,int *p=a或int *p=&a[0];
注意:指針變量的類型應與指針所指向的變量的類型一致,如下代碼會報錯

/*??int?*p;??float?x=3.14;??指針變量的類型應和所指向的變量類型一致。???p=&x;???????????否則會報錯???*/

與整型、浮點型數(shù)據(jù)一樣,指針也可以進行算術運算,但含義卻不同。當一個指針加一或減一并不是使指針增加1或減少一,而是使指針所指向的位置向后或向前移動了一個位置。例如執(zhí)行a=a+3,如果一個整型占用4個字節(jié),則相加后a=2000+4*3=2012(這里假設指針a的初值為2000)。同樣指針也可進行自加自減運算。

也可以用一個指針變量減去另一個指針變量,具體看如下代碼和結果:

int *p,*q,b; int shuzu[6]={0,1,2,3,4,5}; p=shuzu,q=&shuzu[3]; printf("p和q兩指針的地址分別為:%d %d",&p,&q); printf("\np和q兩指針的值為(即所指向元素的地址為):%d %d",p,q); b=p-q; printf("\nb的值為:%d ",b); //b=兩指針值相減的差除以4

結果為:

2.指針數(shù)組

指針數(shù)組其實也是一個數(shù)組,只是數(shù)組中的元素是指針類型的數(shù)據(jù)。換句話說,指針數(shù)組中的每一個元素都是一個指針變量。
定義指針數(shù)組的方式如下:

int *p[4];

由于[ ]運算符優(yōu)先級比*高,p優(yōu)先與[ ]結合,從而形成一個數(shù)組,然后再與*結合,表示該數(shù)組是指針類型的,每個數(shù)組元素是一個指向整型的變量 。
指針數(shù)組常常用于儲存一些長度不等的字符串數(shù)據(jù),有的讀者可能會問,為什么不存放在二維數(shù)組中?因為如將這些字符串若放在二維數(shù)組中,就需要定義一個能容納最長字符串的數(shù)組長度,這樣就會浪費一些空間。下面看我的代碼,上面有注釋。

#includeint main(){ /*二維數(shù)組方式存放長度不一的字符串 */ int i,n=2; char shuzu[2][9]={"my love","my hobby"}; //9為最小長度,不然報錯,數(shù)組[1]別忘了末尾有個'\0', //所以長度為8+1=9 printf("%s\n",shuzu); puts(shuzu[1]); //puts(shuzu)會報錯 /* 指針數(shù)組存放長度不一的字符串*/ char *s[2]={"my love","my hobby"}; for(i=0;i<2;i++) printf("第%d個元素為:%s\n",i,s[i]); char *p;// for(p=s[0];p// printf("%s",p);/*p自加后并不是往后移了一個單位*/ p=s[0]; printf("%s\n",p); p++; printf("%s\n\n",p); /*正確方式1*/ printf("\n通過指向數(shù)組的指針輸出字符串:\n"); for(p=s[0],i=0;i { printf("第%d個字符串:%s\n",i+1,p); i++; } /*正確方式二*/ printf("\n用數(shù)組名輸出指針數(shù)組:\n"); for(i=0;i<2;i++) printf("%s\n",s[i]);}

運行結果:

總結

以上是生活随笔為你收集整理的char二维数组_C语言指针与数组详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。