詳解C語言陣列靈活多變的訪問形式

2022-09-25 05:03:11 字數 1424 閱讀 1510

#include

int main()

執行結果:

s1 = c.biancheng.net

s2 = biancheng.net

c1 = a

c2 = c

c3 = a

c4 = e

c5 = c

num1 = 101

num2 = 6421984

num3 = 6421986

怎麼樣,夠暈吧,如果你嗤之以鼻,那麼恭喜你,你的c語言基礎很紮實。

1) str 既是陣列名稱,也是乙個指向字串的程式設計客棧指標;指標可以參加運算,加 1 相當於陣列下標加 1。

printf() 輸出字串時,要求給出乙個起始位址,並從這個位址開始輸出,直到遇見字串結束標誌\0。s1 為字串 str 第 0 個字元的位址,s2 為第 2 個字元的位址,所以 printf() 的結果分別為 c.biancheng.net 和 biancheng.net。

2) 指標可以參加運算,str+4 表示第 4 個字元的位址,c3 = *(str+4) 表示第4個字元,即 'a'。

3) 其實,陣列元素的訪問形式可以看做 address[offset],address 為起始位址,offset 為偏移量:c1 = str[4]表示以位址 str 為起點,向後偏移4個字元,為 'a';c5 = (str+1)[5]表示以位址 str+1 為起點,向後偏移5個字元,等價於str[6],為 'c'。

4) 字元與整數運算時,先轉換為整數(字元對應的ascii碼)。num1 與 c4 右邊的表示式相同,對於 num1,*str+2 == 'c'+2 == 99+2 == 101,即 num1 的值為 101,對於 c4,101 對應的字元為 『e',所以 c4 的輸出值為 'e'。

5) num2 和 num3 分別為字www.cppcns.com符串 str 的首位址和第 2 個元素的位址。

為了加深大家的程式設計客棧理解,請繼續閱讀下面的**:

#include

#include

int main();

int i;

for(i=0; i<10; i++)

printf("%s\n", str);

printf("%s\n", str+2);

printf("%c\n", str[2]);

printf("%c\n", (str+2)[2]);

return 0; }

執行結果:

abcdefghij

cdefghijce

第5行**用來將字元陣列中的所有元素都初始化為\0,這樣在迴圈結束時就無需新增字串結束標誌。

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

C語言 陣列詳解

1 一維陣列 陣列 一組相同型別的資料的集合 在記憶體中,是一片連續的空間 陣列名就是陣列的首位址 注意 陣列可以初始化,但絕對不可以整體賦值 錯誤示範 arr 對陣列名賦值是錯誤的 arr 5 對陣列某乙個下標賦值只可以賦乙個 求陣列的大小,sizeof 陣列名 2 資料型別 陣列名 陣列的大小 ...

C語言使用指標訪問陣列

如果pa指向陣列中的某個元素,那麼pa 1將指向下乙個元素,pa i指向下i個元素。所以,若果pa指向a 0 那麼 pa其實就是a 0 pa 1 就是a 1 pa i 就是a i 根據這個思路,我們可以使用指標來訪問陣列。01 include 02intmain intargc,char argv ...

c語言 新穎的進製靈活應用

在excel2003 中,用a 表示第1列,b 表示第2 列.z 表示第26 列,aa 表示第27 列,ab 表示第28 列.以此類推,請寫出乙個函式,輸入用大寫字母表示的列號編碼,輸出它是第幾列。解 該題本質是把十進位制數字用a z 表示成二十六進製制。程式 include include int...