[日常] C語言中指針變量
阿新 • • 發佈:2018-06-21
一個 而不是 區分 行程 表示 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語言中指針變量