① c語言的宏(macro)是什麼怎樣使用宏
#define VERSION—STAMP "1.02" 上例中所定義的這種形式的宏通常被稱為標識符。在上例中,標識符VERSION_STAMP即代表字元串"1.02"——在編譯預處理時,源代碼中的每個VERSION_STAMP標識符都將被字元串「1.02」替換掉。 以下是另一個宏定義的例子: #define CUBE(x)((x),(x)*(x)) 上例中定義了一個名為CUBE的宏,它有一個參數x。CUBE宏有自己的宏體,即((x)*(x)*(x))——在編譯預處理時,源代碼中的每個CUBE(x)宏都將被((x)*(x)*(x))替換掉。 使用宏有以下幾點好處: (1)在輸入源代碼時,可省去許多鍵入操作。 (2)因為宏只需定義一次,但可以多次使用,所以使用宏能增強程序的易讀性和可靠性。 (3)使用宏不需要額外的開銷,因為宏所代表的代碼只在宏出現的地方展開,因此不會引起程序中的跳轉。 (4)宏的參數對類型不敏感,因此你不必考慮將何種數據類型傳遞給宏。 需要注意的是,在宏名和括起參數的括弧之間絕對不能有空格。此外,為了避免在翻譯宏時產生歧義,宏體也應該用括弧括起來。例如,象下例中這樣定義CUBE宏是不正確的: denne CUBE(x) x * x * x 對傳遞給宏的參數也要小心,例如,一種常見的錯誤就是將自增變數傳遞給宏,請看下例: #include <stdio. h> #include CUBE(x) (x * x * x) void main (void); void main (void){int x, y;x = 5;y = CUBE( + +x); printfC'y is %d\n" . y);}在上例中,y究竟等於多少呢?實際上,y既不等於125(5的立方),也不等於336(6* 7*8),而是等於512。因為變數x被作為參數傳遞給宏時進行了自增運算,所以上例中的CUBE宏實際上是按以下形式展開的: y = ((++x) * (++x) * (++x)); 這樣,每次引用x時,x都要自增,所以你得到的結果與你預期的結果相差很遠,在上例中,由於x被引用了3次,而且又使用了自增運算符,因此,在展開宏的代碼時,x實際上為8,你將得到8的立方,而不5的立方。 上述錯誤是比較常見的,作者曾親眼見過有多年C語言編程經驗的人犯這種錯誤。因為在程序中檢查這種錯誤是非常費勁的,所以你要給予充分的注意。你最好試一下上面的例子,親眼看一下那個令人驚訝的結果值(512)。 宏也可使用一些特殊的運算符,例如字元串化運算符「#」和。連接運算符「##」。「#」運算符能將宏的參數轉換為帶雙引號的字元串,請看下例: define DEBUG_VALUE(v) printf(#v"is equal to %d.\n",v) 你可以在程序中用DEBUG_VALUE宏檢查變數的值,請看下例: int x=20; DEBUG_VALUE(x); 上述語句將在屏幕上列印"x is equal to 20"。這個例子說明,宏所使用的「#」運算符是一種非常方便的調試工具。 「##」運算符的作用是將兩個獨立的字元串連接成一個字元串。
② c語言程序設計視頻教程
鏈接:
C語言程序設計:
③ C語言中的宏定義怎麼用
C語言中的宏定義用法分為兩種。
1、不帶參數的宏定義比較簡單,就是用一個指定的標識符來代表一個字元串。它的一般形式為「#define 標識符 字元串」,例如#define E 2.718281828459。這種方法使用戶能以一個簡單的名字代替一個長的字元串。
2、帶參數的宏定義不是僅僅進行簡單的字元串替換,還要進行參數替換。其定義的一般形式為;「#define 標識符(宏名)(參數表) 字元串」,字元串中包含在括弧中所指定的參數。例如#define S(a,b) a*b area=S(3. 2)。
(3)c語言宏教程視頻擴展閱讀:
宏定義只佔編譯時間,函數調用則佔用運行時間(分配單元,保存現場,值傳遞,返回),每次執行都要載入,所以執行相對宏定義會較慢。
使用宏定義次數多時,宏定義展開後源程序很長,因為每展開一次都使程序增長,但是執行起來比較快一點(這也不是絕對的,當有很多宏定義展開,目標文件很大,執行的時候運行時系統換頁頻繁,效率就會低下)。而函數調用不使源程序變長。
④ C語言怎麼用宏定義方法求絕對值
一、答案
#define ABS(x) ( (x)>0?(x):-(x) )
使用上述命令就可以使用宏定義絕對值。
二、關於宏定義語法說明
1、定義宏的語法
#define 標識符 常量 //注意, 最後沒有分號
2、語法說明
#define 的功能是將標識符定義為其後的常量。一經定義,程序中就可以直接用標識符來表示這個常量。宏定義看似和變數定義一樣,但是完全不是一個概念。
要區分開!變數名表示的是一個變數,但宏名表示的是一個常量。可以給變數賦值,但絕不能給常量賦值。
宏所表示的常量可以是數字、字元、字元串、表達式。其中最常用的是數字。
三、關於ABS函數定義說明
1、語法定義
int abs(int x)
其中x表示要求絕對值的數。
2、語法解釋
求整數的絕對值。需要引用頭文件math.h 或者 stdlib.h
3、特別注意
x必須是正整數或者正負數。不可以是浮點數類型。
(4)c語言宏教程視頻擴展閱讀
一、C語言宏的定義
採用命令 #define 來定義宏。該命令允許把一個名稱指定成任何所需的文本。
例如一個常量值或者一條語句。在定義了宏之後,無論宏名稱出現在源代碼的何處,預處理器都會把它用定義時指定的文本替換掉。
二、沒有參數的宏
1、語法
#define 宏名稱 替換文本
其中「替換文本」前面和後面的空格符不屬於替換文本中的內容。替代文本本身也可以為空。
2、實例
#define TITLE "*** Examples of Macros Without Parameters ***"
#define BUFFER_SIZE (4 * 512)
#define RANDOM (-1.0 + 2.0*(double)rand() / RAND_MAX)
三、帶參數的宏
1、定義
定義具有形式參數(簡稱「形參」)的宏。當預處理器展開這類宏時,它先使用調用宏時指定的實際參數(簡稱「實參」)取代替換文本中對應的形參。帶有形參的宏通常也稱為類函數宏(function-like macro)。
2、語法
#define 宏名稱( [形參列表] ) 替換文本
#define 宏名稱( [形參列表 ,] ... ) 替換文本
⑤ 有沒有免費的c語言程序設計的教程視頻下載啊要全的啊,謝謝
C語言程序設計
提取碼:8uar復制這段內容後打開網路網盤手機APP,操作更方便哦!若資源有問題歡迎追問~
⑥ 適合初學者的c++視頻教程
王桂林《這可能是你見過「最牛逼」的C++課程》(高清視頻)網路網盤
鏈接: https://pan..com/s/13EipzVPw-wi1SB60OwzqEw
若資源有問題歡迎追問~