iT邦幫忙

2021 iThome 鐵人賽

DAY 27
0
Software Development

0基礎也看得懂的程式設計-30天學會C語言系列 第 27

30天學會C語言: Day 26-變數住哪裡

變數 & 記憶體

變數的內容儲存於記憶體中,記憶體就像是有很多格子的櫃子,每格都會有一個編號,這個編號通常用16進位表示

每格只能儲存一個位元,所以一個變數會占用很多格,而且會在連續的位置上;以一個 char 變數來說,它佔用8個位元,所以記憶中會有一個連續8格的區域屬於這個變數,如果第一個位元從位置0開始,記憶體中位置0~7屬於這個變數

因為每個型別需要的位元數量是固定的,所以只要有某變數第一個位元的位置,就可以控制整個變數

指標(Pointer)

變數在記憶體中的 地址 ,也就是變數第一個位元在記憶體中的位置

取址運算子

取址運算子是 &,可以取得某變數的指標,因為指標本身也是數字,所以可以用 printf() 顯示出來,預留位置 %p 用於顯示指標

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x = 10;
    printf("%p\n", &x);

    return 0;
}

指標變數

因為指標也是數值,所以可以用變數儲存
宣告指標變數,要在變數名稱之前加上 *

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x=10;
    int *p=&x;
    printf("%p\n", &x);
    printf("%p\n", p);
	
    return 0;
}

因為 p 儲存 x 的指標,所以 p 指向 x

取值運算子

取值運算子 * 可以取得某個指標變數指向的值

#include <stdio.h>
#include <stdlib.h>

int main(){
    int x=10;
    int *p=&x;
    printf("%d\n", *p);

    return 0;
}

因為 p 指向 x ,所以對 p 取值會得到 x 的變數值
在這個例子中,*p 等同 x


上一篇
30天學會C語言: Day 25-抽獎的原理
下一篇
30天學會C語言: Day 27-指標當參數
系列文
0基礎也看得懂的程式設計-30天學會C語言30

尚未有邦友留言

立即登入留言