Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

array pointer in C

Posted on 2007 年 12 月 11 日2021 年 3 月 12 日 By 日落 在〈array pointer in C〉中有 4 則留言

今天讀書會的時候,帶學弟練功遇到幾個以前沒想過的問題,C 語言的 array 可以使用指標來存取。

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

printf("value of a = %d (%X)n",a,a);
printf("value of a[0] = %dn",*a);

上面可以看到 a 裡面存的不是數值,而是記憶體位置。這個記憶體位置指到的值就是陣列第一個整數的值。

既然知道陣列指標的用法,就可以利用指標去存取陣列的內容。

printf("a[1] = %dn",a[1]);
printf("a[1] = %dn",*(a+1));
printf("a[1] = %dn",*((int *) (((void *) a)+sizeof(int)*1)));

第三種用法通常用不到,看看就好。

Tags:程式設計

文章導覽

Previous Post: 文章被完整複製
Next Post: 打破鎖國,面對中國

Comments (4) on “array pointer in C”

  1. Unknown表示:
    2007 年 12 月 11 日17:36

    我無法同意 “C 語言的 array 其實是指標” 這句話… /

    回覆
  2. 日落 Zero表示:
    2007 年 12 月 11 日17:47

    我也不會解釋,反正宣告成陣列變數,那個變數是指標

    回覆
  3. Unknown表示:
    2007 年 12 月 11 日18:53

    你可以利用指標去存取陣列
    但是指標和陣列不應該當成同樣的東西
    以如下的狀況來說
    int a[10], c[5];
    int * b, * d;
    *( a + 5 )和*( c + 2 )是安全的
    但是*( b + 3 )和*( d + 1 )是不安全的
    雖然b = d和d = a是合法的
    不過a = c則否

    陣列是一段連續的記憶體空間集合
    而指標只是用來存取它的手段之一

    回覆
  4. 日落 Zero表示:
    2007 年 12 月 11 日23:27

    感謝,已更正。

    回覆

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.