我想了解的是為什么指針指向常量的地址,輸出值時,地址是常量的地址,結果卻不一樣,我知道常量不能修改,但是為什么會有這種情況?謝謝大家。?#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();
}
1 回答

anet
TA貢獻79條經驗 獲得超19個贊
所謂的常量不能修改,是指c語言的語法層面,實際上程序在內存中的數據都可以被修改,外掛就是這么干的。常量限定,僅僅存在于編譯階段檢測,通過指針修改常量,屬于未定義行為,成功與否,取決于你使用的編譯器。
- 1 回答
- 0 關注
- 1173 瀏覽
添加回答
舉報
0/150
提交
取消