2020年7月15日星期三

小小工程師成長紀錄-指標篇01-取址取值傻傻分不清楚

一開始學指標需要先建立一個觀念
* 與 & 到底誰是誰,做甚麼用的
先來說說*吧

一、符號說明"*"
 主要是宣告一個指標變數,可以是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;
}

附上結果圖,由於每台電腦的運作不同所以所看到配置的記憶體位址也會不同,每次編譯後所配置到的記憶體空間也不同喔,有興趣的朋友可以多編譯執行幾次看看。

第一次編譯執行
第二次編譯執行

今天就先到這,歡迎留言討論


沒有留言:

發佈留言

打賞按讚