本文目錄一覽:
- 1、C語言程序設計
- 2、什麼是C語言程序設計?
- 3、設計一個C語言程序
- 4、c語言程序設計是什麼
C語言程序設計
在介紹C語言的宏定義之前,需要介紹一下預處理。
什麼是預處理呢?所謂預處理是指在進行編譯的第一遍掃描(詞法掃描和語法分析)之前所做的工作。預處理是C語言的一個重要的功能,它由預處理程序負責完成。當對一個源文件進行編譯時,系統將自動引用預處理程序對源程序中的預處理部分作處理,處理完畢後自動進入對源程序的編譯。
程序中以“#”開頭的預處理命令,如包含命令#include,宏定義命令#define等。在源程序中這些命令都放在函數之外,一般放在源文件的前面,稱為預處理部分。宏定義就是預處理的一種。
C語言中允許用一個標識符來表示一個字符串,稱為“宏”。被定義為“宏”的標識符稱為“宏名”。在預編譯處理時,對程序中所有出現的“宏名”,都用宏定義中的字符串去代換,這稱為“宏代換”或“宏展開”。
C語言的“宏”分為有參數和無參數兩種,下面對這兩種“宏”分別進行討論。
1、無參宏定義
無參宏的宏名後不帶參數。
其定義的一般形式為:#define 標識符 字符串
“標識符”為所定義的宏名,“字符串”可以是常數、表達式、格式串等。
例如:
#define M (x*x+2*x+1)
它的作用是指定標識符M來代替表達式(x*x+2*x+1)。在編寫源程序時,所有的(x*x+2*x+1)都可以由M代替。而對源程序作編譯時,將先由預處理程序進行宏代換,即用(x*x+2*x+1)表達式去置換所有的宏名M,然後再進行編譯。
例如:
#include stdio.h
#define M (x*x+2*x+1)
main()
{
int sum,x;
printf(“input a number: “);
scanf(“%d”,x);
sum=3*M+4*M+5*M;
printf(“sum=%d\n”,sum);
}
上例程序先用宏定義M來替代表達式(x*x+2*x+1),在sum=3*M+4*M+5*M中作了宏調用。在預處理時經宏展開後該語句變為sum=3*(x*x+2*x+1)+4*(x*x+2*x+1)+5*M(x*x+2*x+1)。
對於宏定義需要注意一下幾點:
1)宏定義是用宏名來表示一個字符串,在宏展開時,又以該字符串取代宏名,這只是一種簡單的代換,字符串中可以包含任何字符,可以是常數,也可以是表達式,預處理程序不對它作任何檢查。如有錯誤,只能在編譯已被宏展開後的的源程序時發現。
2)宏定義不是說明或語句,在行末不需加分號,若加了分號則連分號一起置換。
3)宏定義必須寫在函數之外,其作用域為宏定義命令起到源程序結束。如要終止其作用域可使用#undef命令。
例如:
#define PI 3.1415926
main()
{
…
}
#undef PI
f1()
{
…
}
表示PI只在main函數中有效,在f1中無效。
4)宏名若在程序中用引號括起來,則預處理程序不對其作宏代換。
5)宏定義允許嵌套,在宏定義的字符串中可以使用已定義的宏名。在宏展開時,由預處理程序層層代換。
6)習慣上宏名用大寫字母表示,以區分變量。當然也可以用小寫字母表示。
7)可以用宏定義表示數據類型,使書寫方便。
例如:
#define U8 unsigned int
注意宏定義表示數據類型和用typedef定義數據說明符的區別:宏定義只是簡單的字符串代換,是在預處理完成的;而typedef是在編譯時處理的,它不是做簡單的代換,而是對類型說明符重新命名,被命名的標識符具有類型定義說明的功能。
2、帶參宏定義
在宏定義中的參數稱為形式參數,在宏調用中的參數稱為實際參數。
對帶參的宏,在調用中,不僅要宏展開,而且要用實參去代換形參。
帶參宏定義的一般形式為:
#define 宏名(形參表) 字符串
在字符串中含有各個形參。
帶參宏調用的一般形式為:
宏名(實參表);
例如:
#define M(y) y*y+3y /*宏定義*/
…
k=M(5) /*宏調用*/
…
在宏調用時,用實參5去替代形參y,經預處理宏展開後的語句為:
k=5*5+3*5
例如:用帶參宏來獲取較大數
#define MAX(a,b) (ab)?a:b
對於帶參宏需要注意以下幾點:
1)帶參宏定義中,宏名和形參表之間不能有空格出現。
2)在帶參宏定義中,形式參數不分配內存單元,因此不必作類型定義。而宏調用中的實參由具體的值,要用它們去代換形參,因此必須作類型聲明。這只是符號代換,不存在值傳遞的問題。
3)在宏定義中形參是標識符,而宏調用中的實參可以是表達式。
4)在宏定義中,字符串內的形參通常要用括號括起來以免出錯。
什麼是C語言程序設計?
什麼是C語言?C語言的簡介。
C語言是一種計算機程序設計語言,它既具有高級語言的特點,又具有彙編語言的特點。
它可以作為工作系統設計語言,編寫系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。
因此,它的應用範圍廣泛,不僅僅是在軟件開發上,而且各類科研都需要用到C語言,具體應用比如單片機以及嵌入式系統開發。
語言特點:C是中級語言/C是結構式語言/C語言功能齊全/C語言適用範圍大/簡潔緊湊、靈活方便/運算符豐富/數據類型豐富/C是結構式語言/語法限制不太嚴格,程序設計自由度大/適用範圍大,可移植性好。
設計一個C語言程序
#includestdio.h
#includestdlib.h
int main()
{
FILE* file = fopen(“producer.in”,”r”);
char* buf=(char* )malloc(120);
char* buf2=(char* )malloc(50);
int len;
while((len=fread(buf,1,120,file))0)
{
int i;
for(i=0;ilen;++i)
{
printf(“%08s “,itoa((int)buf[i],buf2,2));
}
}
}
把producer.in文件的內容“123”轉成二進制”00110001 00110010 00110011 00001010″(包含了最後的換行符,ASCII是10)了。
如果希望把答案寫入文件可以追問,我追答。
c語言程序設計是什麼
C語言是一種計算機程序設計語言。它既有高級語言的特點,又具有彙編語言的特點。它可以作為系統設計語言,編寫工作系統應用程序,也可以作為應用程序設計語言,編寫不依賴計算機硬件的應用程序。
C語言是普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有彙編語言的優點,因此相對於其它編程語言,它具有自己獨特的特點。具體體現為以下三個方面:
其一,廣泛性。C語言的運算範圍的大小直接決定了其優劣性。C語言中包含了34種運算符,因此運算範圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C語言包含了字符型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。
其二,簡潔性。9類控制語句和32個關鍵字是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同時還能夠支持高級編程,避免了語言切換的繁瑣。
其三,結構完善。C語言是一種結構化語言,它可以通過組建模塊單位的形式實現模塊化的應用程序,在系統描述方面具有顯著優勢,同時這一特性也使得它能夠適應多種不同的編程要求,且執行效率高。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/155506.html