最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解C語(yǔ)言數(shù)組靈活多變的訪問形式

 更新時(shí)間:2021年01月21日 10:34:35   作者:zy_kxo  
這篇文章主要介紹了詳解C語(yǔ)言數(shù)組靈活多變的訪問形式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

C語(yǔ)言中的指針使得代碼的編寫非常靈活,如果指針能夠和數(shù)組結(jié)合,那將會(huì)有更多的“花招”,請(qǐng)看下面的代碼:

#include <stdio.h>  
int main(){  
 char str[20] = "c.biancheng.net"; 
 char *s1 = str; 
 char *s2 = str+2;
 char c1 = str[4];
 char c2 = *str;
 char c3 = *(str+4);
 char c4 = *str+2;
 char c5 = (str+1)[5];
 
 int num1 = *str+2;
 long num2 = (long)str;
 long num3 = (long)(str+2);
 
 printf(" s1 = %s\n", s1);
 printf(" s2 = %s\n", s2);
 printf(" c1 = %c\n", c1);
 printf(" c2 = %c\n", c2); 
 printf(" c3 = %c\n", c3); 
 printf(" c4 = %c\n", c4);
 printf(" c5 = %c\n", c5);  
 printf("num1 = %d\n", num1);  
 printf("num2 = %ld\n", num2);
 printf("num3 = %ld\n", num3);
 return 0;
}

運(yùn)行結(jié)果:

 s1 = c.biancheng.net
 s2 = biancheng.net
 c1 = a
 c2 = c
 c3 = a
 c4 = e
 c5 = c
num1 = 101
num2 = 6421984
num3 = 6421986

怎么樣,夠暈吧,如果你嗤之以鼻,那么恭喜你,你的C語(yǔ)言基礎(chǔ)很扎實(shí)。

1) str 既是數(shù)組名稱,也是一個(gè)指向字符串的指針;指針可以參加運(yùn)算,加 1 相當(dāng)于數(shù)組下標(biāo)加 1。
printf() 輸出字符串時(shí),要求給出一個(gè)起始地址,并從這個(gè)地址開始輸出,直到遇見字符串結(jié)束標(biāo)志\0。s1 為字符串 str 第 0 個(gè)字符的地址,s2 為第 2 個(gè)字符的地址,所以 printf() 的結(jié)果分別為 c.biancheng.net 和 biancheng.net。

2) 指針可以參加運(yùn)算,str+4 表示第 4 個(gè)字符的地址,c3 = *(str+4) 表示第4個(gè)字符,即 'a'。

3) 其實(shí),數(shù)組元素的訪問形式可以看做 address[offset],address 為起始地址,offset 為偏移量:c1 = str[4]表示以地址 str 為起點(diǎn),向后偏移4個(gè)字符,為 'a';c5 = (str+1)[5]表示以地址 str+1 為起點(diǎn),向后偏移5個(gè)字符,等價(jià)于str[6],為 'c'。

4) 字符與整數(shù)運(yùn)算時(shí),先轉(zhuǎn)換為整數(shù)(字符對(duì)應(yīng)的ASCII碼)。num1 與 c4 右邊的表達(dá)式相同,對(duì)于 num1,*str+2 == 'c'+2 == 99+2 == 101,即 num1 的值為 101,對(duì)于 c4,101 對(duì)應(yīng)的字符為 ‘e',所以 c4 的輸出值為 'e'。

5) num2 和 num3 分別為字符串 str 的首地址和第 2 個(gè)元素的地址。

為了加深大家的理解,請(qǐng)繼續(xù)閱讀下面的代碼:

#include <stdio.h>
#include <stdlib.h> 
int main(){
 char str[20] = {0};
 int i;
 for(i=0; i<10; i++){
 *(str+i) = 97+i; // 97為字符a的ASCII碼值
 }
 
 printf("%s\n", str);
 printf("%s\n", str+2);
 printf("%c\n", str[2]);
 printf("%c\n", (str+2)[2]);
 return 0;
 
}

運(yùn)行結(jié)果:

abcdefghij
cdefghij
c
e

第5行代碼用來將字符數(shù)組中的所有元素都初始化為\0,這樣在循環(huán)結(jié)束時(shí)就無需添加字符串結(jié)束標(biāo)志。

前面三個(gè) printf() 比較容易理解,第四個(gè) printf() 可以參照上面的說明 3),str+2 表示指向第 2 個(gè)元素,(str+2)[2] 相當(dāng)于 *(str+2+2),也就是取得第 4 個(gè)元素的值。

到此這篇關(guān)于詳解C語(yǔ)言數(shù)組靈活多變的訪問形式的文章就介紹到這了,更多相關(guān)C語(yǔ)言數(shù)組訪問形式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

荆门市| 凌云县| 和田市| 佳木斯市| 休宁县| 张家界市| 大邑县| 齐河县| 大宁县| 长海县| 镇平县| 井陉县| 萨迦县| 浮梁县| 阜新| 东平县| 简阳市| 米林县| 西昌市| 桐梓县| 垣曲县| 泸西县| 玉山县| 蚌埠市| 信阳市| 清新县| 翁源县| 涟源市| 广饶县| 金堂县| 吉水县| 禹城市| 舞钢市| 阿克陶县| 和平区| 轮台县| 铜川市| 淮北市| 上林县| 司法| 明光市|