1. 程式人生 > >[日常] C語言中指針變量

[日常] C語言中指針變量

一個 而不是 區分 行程 表示 CP 初始 函數 signed

CPU 訪問內存時需要的是地址,而不是變量名和函數名!變量名和函數名只是地址的一種助記符,當源文件被編譯和鏈接成可執行程序後,它們都會被替換成地址。編譯和鏈接過程的一項重要任務就是找到這些名稱所對應的地址。

#include <stdio.h>
//指針變量測試
//指針變量存儲的值是另一個變量的地址,也就是說改指針變量指向了另一個變量
int main(){
        int a=10;
        int c=20;
        //1.打印出變量的內存地址
        printf("%#X \n",(unsigned int)&a);//輸出 0XBFA0ED70
 

        //2.定義指針變量時必須帶*,定義並初始化,b的值是a的內存地址
        int* b=&a;

        //3.打印出指針變量本身的地址
        printf("%#X \n",(unsigned int)&b);//輸出 0XBFA0ED78

        //4.打印出指針變量存儲的值
        printf("%#X \n",(unsigned int)b);//輸出 0XBFA0ED70
    

        //5.給指針變量賦值時,不用帶*
        b=&c;

        //6.通過指針變量獲取數據時要帶*,使用指針是間接獲取數據
        printf("%d \n",*b);

        //7.通過指針變量修改內存上的數據
        *b=30;
        printf("%d \n",c);

        //8.關於*和&的謎題
        int d=40;
        int* e=&d;
        int f=*&d;//等價於 *(&d) ==> d
        int* g=&*e;//等價於 &(*e) ==> e

        /** 
        對星號*的總結:

        在我們目前所學到的語法中,星號*主要有三種用途:
        表示乘法,例如int a = 3, b = 5, c;  c = a * b;,這是最容易理解的。
        表示定義一個指針變量,以和普通變量區分開,例如int a = 100;  int *p = &a;。
        表示獲取指針指向的數據,是一種間接操作,例如int a, b, *p = &a;  *p = 100;  b = *p;
        */    
}

  

[日常] C語言中指針變量