C語言中的const,冒牌貨常量

const 修飾的全局變量,初始化則存放在data區,未初始化放在bss區

          不可以直接修改;用指針的方式間接修改,編譯不出錯但是運行會出錯

 

const修飾的局部變量, 放在棧上

         不可以直接修改;用指針的方式間接修改,編譯不出錯但是運行也不出錯

          用指針間接修改的方式可以改變const修飾的局部變量

#include <stdio.h>

const int a = 10;

//void test01()
//{
//	//a = 100;	//編譯器報錯,不允許直接修改
//	int *p = &a;
//	*p = 20;
//	printf("%d\n", *p);	//編譯不出錯,運行出錯,這裏a放在data區,不允許被修改
//}

void test02()
{
	const int b = 10;

	//b = 20;		//編譯器報錯,不允許直接修改

	int *p = &b;
	*p = 20;
	printf("%d\n", b);	//這裏編譯運行都可以通過,const常量是個冒牌貨

}

int main(void)
{
	//test01();
	test02();

	system("pause");
	return 0;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章