int i = 5;
int *p = &i;
int y = *p;
首先是
int i = 5;
代表於某一memory(假設1234)中設定variable i = 5。
再來是
int *p = &i;
表示說於某一memory(假設2468)中設定p為x的記憶體位置(1234)。
最後是
int y = *p;
因為p=1234
然後記憶體1234的值為5(i = 5)
另外,若
int i = 5;
int *p = &i;
int y = *p;
*p = 7
則因為 p = (i的位置)
所以 i = 7
Example
#include <stdio.h>
int main(void){
int x = 5;
int *p = &x;
int y = *p;
*p = 10;
printf("\t%15c%15c%15c\n",'x','p','y');
printf("num\t");
printf("%15d", x);
printf("%15p", p);
printf("%15d", y);
printf("\n");
printf("*\t");
printf("%15d", x);
printf("%15d", *p);
printf("%15d", y);
printf("\n");
printf("&\t");
printf("%15p", &x);
printf("%15p", &p);
printf("%15p", &y);
printf("\n");
}
結果:
x p y
num 10 0x7fff1cd0b808 5
* 10 10 5
& 0x7fff1cd0b808 0x7fff1cd0b800 0x7fff1cd0b7fc
紅字為「記憶體位置,所以每次的值都不一樣」
沒有留言:
張貼留言