* 與 & 到底誰是誰,做甚麼用的
先來說說*吧
一、符號說明"*"
主要是宣告一個指標變數,可以是int ,long,char...等。
宣告方式說明:以下四種方式都可以
變數型態 *名稱;
變數型態* 名稱;
變數型態*名稱;
變數型態 * 名稱;
EX
int *addr; //念法->addr是一個指向整數的指標變數
char *addr; //念法->addr是一個指向字元的指標變數
再來接著說&
二、符號說明"&"
主要功能是取得變數的記憶體空間"位址"如下圖
像之前在學變數時,宣告完後拿變數來儲存,但是重點來了!!!
其實每個變數都有一個記憶體位址+一個內容值。
注意喔!是每個變數都有一個記憶體位址,我們通常存的數值是在儲存在儲存資料內容那邊。
所以當我們指標是取變數的儲存該變數的記憶體位址
既然"&"與"*"都已經大致上說明了。那接下來就是要簡單的跑一下程式碼啦
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1 = 10; //宣告 int 型態的 num1等於10
int *ptr = &num1; //宣告一個int型態的指標儲存num1的記憶體位址
printf("num1's pointer is %p\n",ptr);
//列印出指標所存放的內容(也就是num1的記憶體位址
)
return 0;
}
附上結果圖,由於每台電腦的運作不同所以所看到配置的記憶體位址也會不同,每次編譯後所配置到的記憶體空間也不同喔,有興趣的朋友可以多編譯執行幾次看看。
第一次編譯執行
第二次編譯執行
今天就先到這,歡迎留言討論
沒有留言:
發佈留言