3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
一把梭系列 ~ C語言範例 (0016) [指標變數的位址與運算] 資料來源: https://openhome.cc/Gossip/CGossip/Pointer.html https://openhome.cc/Gossip/CGossip/PointerArithmetic.html 線上執行: https://www.tutorialspoint.com/compile_c_online.php ★前言: ★主題:     程式語言變數提供具名稱的記憶體儲存空間,一個變數關聯『一個資料型態』、『儲存的值』與『儲存空間的位址值』。     01.取址運算子(Address-of operator)         如果想知道變數的記憶體位址,可以使用 & 取址運算子(Address-of operator),例如: int n = 10; printf("變數 n 的資料型態:int\n"); printf("變數 n 儲存的值:%d\n", n); printf("變數 n 記憶體位址:%p\n", &n);              02.宣告指標變數         一般變數儲存的內容都是數值,而指標變數的儲存的值為某一個記憶體位址值,其宣告方法如下: //資料型態△*變數名稱01,*變數名稱02; //資料型態*△變數名稱01; //△是英文空格 int *n,*m; float* f; char *c;              03.設定指標變數內容與取出儲存位址處之值 int n = 10; int *p='\0' ; printf("p 初始化儲存的位址:%p\n", p); printf("n 的位址:%p\n", &n); p=&n;//把n的的記憶體為只取出存放到指標變數中 printf("p 儲存的位址:%p\n", p); printf("取出 p 儲存位址處之值:%d\n", *p);                      04.指標的運算         除了指定運算子=、取址運算子 & 與取值運算子 * 之外,還有 +、-、++、–、+= 與 -= 等運算子可以使用在指標上。         指標的加法與減法與一般數值的加減法不同,在指標運算上加 1 ,是表示前進『一個資料型態的記憶體長度』,例如 int *p1='\0' ; float f=0; float *p2='\0'; printf("p1 位址:%p\n", p1); printf("p1 + 1:%p\n", p1 + 1); printf("p1 + 2:%p\n", p1 + 2); p2=&f; printf("p2 位址:%p\n", p2); printf("p2 - 1:%p\n", p2 - 1); printf("p2 - 2:%p\n", p2 - 2); ★code: #include #include int main() { //取址運算子(Address-of operator) int n = 10; printf("變數 n 的資料型態:int\n"); printf("變數 n 儲存的值:%d\n", n); printf("變數 n 記憶體位址:%p\n\n", &n); //設定指標變數內容與取出儲存位址處之值 int *p='\0' ; int* p3; printf("p 初始化儲存的位址:%p\n", p); printf("n 的位址:%p\n\n", &n); p=&n;//把n的的記憶體為只取出存放到指標變數中 p3=p; printf("p 儲存的位址:%p\n", p); printf("取出 p 儲存位址處之值:%d,%d\n\n", *p,*p3); //指標的運算 int *p1='\0' ; double d=0; double *p2; printf("p1 位址:%p\n", p1); printf("p1 + 1:%p\n", p1 + 1); printf("p1 + 2:%p\n\n", p1 + 2); p2=&d; printf("p2 位址:%p\n", p2); printf("p2 - 1:%p\n", p2 - 1); printf("p2 - 2:%p\n\n", p2 - 2); //記憶體大小 printf("整數變數記憶體大小:%d\n", sizeof(int)); printf("倍精度變數記憶體大小:%d\n", sizeof(double)); printf("整數變數指標記憶體大小:%d\n", sizeof(int*)); printf("倍精度變數指標記憶體大小:%d\n", sizeof(double*)); return 0; } ★結果: ★延伸說明/重點回顧:     01.一個變數關聯『一個資料型態』、『儲存的值』與『儲存空間的位址值』三項數值          02.一般變數和指標變數的差異只在於『儲存的值』內的資料內容,一般變數儲存普通數值,指標變數儲存一般變數的記憶體位址          03.一般變數的配置記憶體大小由型態決定,指鰾變數配置記憶體大小由編譯器位元數決定(x32編譯器->4byte ; x64編譯器->8byte)

本文由jashliaoeuwordpress提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦