& 是位操作運(yùn)算符 *代表指針
在C語言中?
&可以用來拿到變量在內(nèi)存中存儲(chǔ)的地址?
*可以用來拿到對(duì)應(yīng)地址中的具體內(nèi)容
比如 :
int a=123;
直接printf ? ? ? ?printf("a = %d",a); ? ? ? 可以直接獲得 打印 123 內(nèi)容
直接 printf ? ? ? printf("a = %p",&a); ? ?打印的地址是 0x.............一個(gè)十六進(jìn)制的地址
那么我們定義一個(gè)指針變量
int *b = NULL;
b = &a; ?//*b代表指針變量 而 b只能賦值為地址?
當(dāng)我們想要拿到指針 *b 中的內(nèi)容的時(shí)候 ? ? printf("%d",*&b); ? ?打印的結(jié)果與a變量是一樣的
在之前 我們已經(jīng)把變量a的值賦給了*b ?
現(xiàn)在 *b的值也就是 123
如果我們對(duì) *b的值進(jìn)行重新賦值
*b = 512;
那么打印結(jié)果?
printf("a = %d\n",a);
printf("b = %d\n",*b);
// a = 512 ?b = 512;
為什么會(huì)這樣呢渠啤?
因?yàn)樵谫x值之后 指針*b ?指向 變量a 這個(gè)時(shí)候 相當(dāng)于 指針*b直接指向了 a的內(nèi)存 所以 對(duì)指針*b做修改的時(shí)候就是對(duì)那塊內(nèi)存中的內(nèi)容進(jìn)行修改 所以修改了 *b后 變量a中的內(nèi)容也也會(huì)被修改
最終總結(jié)我的理解 只有一句話