iT邦幫忙

2023 iThome 鐵人賽

DAY 12
1
自我挑戰組

那些有趣的程式系列 第 12

【Day12】從零開始的程式大亂鬥:指標

  • 分享至 

  • xImage
  •  

今天要介紹的是C語言的指標。

在C語言中,指標是用來儲存 記憶體位址 的,例如:

  • 整數(int) 10 的位址
  • 字元(char) A 的位址
  • 浮點數(float、double) 3.14 的位址

我們可以將指標想作 住家地址(位址) ,此地址居住著一個 人(變數)

指標在宣告上與變數大致相同,但要加上 * 來告訴編譯器,此變數為指標,用於儲存變數位址。
既然有存儲,相反的則有取出,我們要取出一個變數的位址要使用 & ,取出位址的動作,可以看作一個運算,如同 +-*/% 一樣,因此要放在 = 右邊。

以C語言為例:

  1. 宣告指標:
int *intAddress;
char *charAddress;
float *floatAddress;
double *doubleAddress;
  1. 宣告一般的變數:
int intVariable;
char charVariable;
float floatVariable;
double doubleVariable;
  1. 將對應的變數用 & 取得位址,賦值給對應的指標:
intAddress = &intVariable;
charAddress = &charVariable;
floatAddress = &floatVariable;
doubleAddress = &doubleVariable;
  1. 使用 printf 顯示指標變數所存儲的位址:
printf("%p\n", intAddress);
printf("%p\n", charAddress);
printf("%p\n", floatAddress);
printf("%p\n", doubleAddress);

完整程式碼:

#include <stdio.h>

int main() {
    int *intAddress;
    char *charAddress;
    float *floatAddress;
    double *doubleAddress;

    int intVariable;
    char charVariable;
    float floatVariable;
    double doubleVariable;

    intAddress = &intVariable;
    charAddress = &charVariable;
    floatAddress = &floatVariable;
    doubleAddress = &doubleVariable;

    printf("%p\n", intAddress);
    printf("%p\n", charAddress);
    printf("%p\n", floatAddress);
    printf("%p\n", doubleAddress);

    return 0;
}

輸出結果:

000000000061FDFC
000000000061FDFB
000000000061FDF4
000000000061FDE8

另外,輸出結果可能會不同,這是正常情況。


上一篇
【Day11】從零開始的程式大亂鬥:結構
下一篇
【Day13】從零開始的程式大亂鬥:類別
系列文
那些有趣的程式35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言