程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 程序猿之---C語言細節28(const變量初始化、數組大小用const變量細節、const變量與#define宏、volatile修飾)

程序猿之---C語言細節28(const變量初始化、數組大小用const變量細節、const變量與#define宏、volatile修飾)

編輯:關於C語言

程序猿之---C語言細節28(const變量初始化、數組大小用const變量細節、const變量與#define宏、volatile修飾)


主要內容:const變量初始化、數組大小用const變量細節、const變量與#define宏、volatile修飾

一、const變量初始化時必須賦值

二、const變量在C++中可以做數組大小元素、在C中不行,因為它是變量

三、const和#define區別:內存分配

四、volatile修飾一些變量:易被操縱系統、硬件、多線程修改的變量

#include 

int main()
{
/* 
  測試1 
*/ 
	const int b;  // 不初始化會報錯 
//	b = 2;
	
/* 測試2 
 *C語言中以下定義數組大小會報錯,可看出c語言中const修飾的num是變量,不是常量 
 * 而C++中則編譯通過可以用 
 */ 
	const int num = 2;
//	int a[num] ={3,4}; 

/*
  測試3 
*/
	#define M 4   // 宏常量 
        const int N = 5;  //此時並未將N放入內存中,保存在符號表中 
	int i = N;   // 此時為N分配內存,以後不再分配 
	int I = M;   // 預編譯起見進行宏替換,分配內存 (M沒有類型,怎麼分配內存) 
	int j = N;   // 沒有內存分配 
	int J = M;   // 再次宏替換,有一次分配內存 
 
 
/*
   測試4 
   在做下面測試時,vc++6.0一般Debug模式沒有優化,但可以同時生成Debug和Release版做測試 
*/
	int test = 10;
	int test_1 = test;
	int test_2 = test;  // 在這裡賦值時,編譯器不會生成匯編重新從內存讀取test值(在兩次賦值間test沒有作為左值,否則不優化) 
	
	volatile int t;
	int t_1 = t;
	int t_2 = t;   // 在這裡賦值時,t重新從內存讀取 
	
	const volatile int temp;   // temp只讀,可以表示只讀寄存器 
}
輸出:

此例子無輸出

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved