第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

我想了解的是為什么指針指向常量的地址,輸出值時,地址是常量的地址,結(jié)果卻不一樣,我知道常量不能修改,但是為什么會有這種情況?

http://img1.sycdn.imooc.com//5a27e3560001900d06660305.jpg

我想了解的是為什么指針指向常量的地址,輸出值時,地址是常量的地址,結(jié)果卻不一樣,我知道常量不能修改,但是為什么會有這種情況?謝謝大家。

正在回答

3 回答

這里簡單回答一下 避免以后有人看到??

第一點? 這個 問題? 在 C 語言 和C++ 結(jié)果 可能會有區(qū)別? ?而且 在不同編譯器可能也會有區(qū)別?

這里沒有測試 不糾結(jié)不同編譯器? 的結(jié)果?

首先如果 是C 語言? 輸出結(jié)果應(yīng)該都是 修改后的結(jié)果?

正常的預(yù)期是 不同編譯結(jié)果也都是一樣的 都是 修改后的結(jié)果?

但是在C++里面 輸出的 兩個值 確是不同的? 大部分編譯器都是不同的??

這里是因為C++ 對const 常量 進行了 優(yōu)化??

如果想具體了解 可以百度?“?C++ 常量折疊” 很容易找到? 結(jié)果很多


還有就是 如果 你認為你寫的 是C語言的代碼? 跟C++沒有關(guān)系?

這里可以給你個簡單的建議 把 上面代碼 復(fù)制 保存到.c 文件? 看看 就知道了?

因為 樓主 是用cpp 文件保存的 所以 一般情況下,編譯器看見cpp 文件 直接默認就用cpp 方式編譯了?

c語言的好理解 畢竟? 就是 同一個值 修改了? 也一起修改

c++ 因為引入了 優(yōu)化?

這里有個? 常量 符號表 默認常量 會在 符號表保存 默認值? 使用時 默認從 常量表取值

而 指針指向的 是 這個值得具體內(nèi)存 所以就是說 確實 有2分 不同的值 保存了


這樣 也有一個好處就是 如果你修改了 const 的值 在使用的時候? 使用的 還是未修改的

既然是const? 就是 不能修改的 所以 這個優(yōu)化 可以為你帶來的 好處就是你不小心修改了常量?

而使用時候 確實未修改的 這樣 有時候 是有助于 程序健壯性的?




0 回復(fù) 有任何疑惑可以回復(fù)我~

可能是地址的引用不同了吧,開始是把80指向pi這個地址變量。然后又把這個地址變量重新指向了20,雖然還是同一個地址,但引用的值改變了

0 回復(fù) 有任何疑惑可以回復(fù)我~
?#include<stdio.h>
?main()
{
	const?int?il=80;
	int?*pi;
	pi=?(int?*)?&il;
	*?pi=20;
	printf("%d+pi\n",*pi);
	//pi所指向地址上的值
	printf("%s+pi\n",pi);
	//pi指針所指向地址
	printf("%d+il\n",il);
	//il的值
	printf("%s+il\n",&il);
	//il的地址
	getchar();
}

這是源碼

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

我想了解的是為什么指針指向常量的地址,輸出值時,地址是常量的地址,結(jié)果卻不一樣,我知道常量不能修改,但是為什么會有這種情況?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號