C基礎(chǔ)c語(yǔ)言之父丹尼斯 里奇C語(yǔ)言的優(yōu)缺點(diǎn):優(yōu)點(diǎn):缺點(diǎn):1.C語(yǔ)言的引入------hello,world!#includeint main(int argc,char *argcv[]){? ? printf("hello,world!\n");? ? return 0;} 程序解析#:預(yù)處理命令include:頭文件的包含<>:把括號(hào)里面的內(nèi)容引入到原文件中來stdio.h:頭文件,是計(jì)算機(jī)自帶的庫(kù),可以直接使用main:函數(shù)名,main()是主函數(shù),C程序源文件有且只能有一個(gè)? ? main()即主函數(shù)!!!C程序的入口,即所有的C程序都是從main() 開始執(zhí)行!!!int argc:參數(shù)的個(gè)數(shù)char *argc[]:記錄參數(shù)printf():是庫(kù)函數(shù),包含在中,按一定格式輸出。return 0:返回,或者函數(shù)結(jié)束注:? ? 此程序基本決定了C程序的框架? ? 2.C的數(shù)據(jù)類型? ? 基本數(shù)據(jù)類型:? ? ? ? ? 整數(shù)類型:? ? ? ? ? ? ? int:基本整形? ? ? ? ? ? ? short int:短整形(short)? ? ? ? ? ? ? long int長(zhǎng)整形(long)? ? ? ? ? ? ? unsigned:無符號(hào)? ? ? ? ? ? ? signed:有符號(hào)? ? ? ? ? ? 字符型:? ? ? ? ? ? ? char? ? ? ? ? ? ? 字符:由單個(gè)字符引起來的單個(gè)字母,數(shù)字或其他符號(hào)? ? ? ? ? ? ? ? ? ? 'e'? '1'? '!'? 等都是字符? ? ? ? ? ? ? getchar():獲得單個(gè)字符? ? ? ? ? ? ? putchar():輸出單個(gè)字符? ? ? ? ? 實(shí)型(浮點(diǎn)型):? ? ? ? ? ? ? float:單精度? ? 有效位:7位左右? ? ? ? ? ? ? double:雙精度? ? 有效位:15位左右? ? ? ? ? ? ? numf E n? 乘以10的n次方? ? ? ? ? ? ? n:一定是整數(shù)? ? ? ? ? ? ? new_numf = numf * 10^n;? ? ? ? ? 枚舉類型:? ? ? ? ? ? ? enum:? ? 構(gòu)造數(shù)據(jù)類型:? ? ? ? ? 數(shù)組類型,結(jié)構(gòu)體(struct),聯(lián)合體(union)? ? 指針類型:? ? 空類型:? ? ? ? ? ? ? ? void:? ? ? 3.變量的定義? ? ? ? data:數(shù)據(jù)? ? type:類型? ? value:值? ? (1)DataType Name,Name2,...,Namn;? ? 可以定義多個(gè)變量,中間用逗號(hào)隔開,結(jié)尾用分號(hào)!? ? (2)DataType Name;? ? ? ? DataType Name1;? ? (3)建議一行定義一個(gè)定義并初始化? ? ? ? DataType Name = value;? ? ? ? ? 4.標(biāo)識(shí)符:g? ? 包括變量名,函數(shù)名及其他標(biāo)號(hào)等? ? (1)標(biāo)識(shí)符的命名要求? ? ? ? ? 可以由字母(A~Z,a~z),下劃線(_),數(shù)字組成? ? ? ? ? 且規(guī)定第一個(gè)字符不能為數(shù)字? ? ×(2)命名規(guī)則? ? ? ? ? 可讀性要高,做到“見名知意”? ? ? ? ? 駝峰命名法? ? ? ? ? 盡量不要用漢語(yǔ)拼音? ? ? ? 5.格式輸入/輸出:printf()/scanf()? ? ? ? ? (1)printf()? ? ? ? ? 按一定格式輸出:? ? ? ? ? printf("占位符")參數(shù)列表? ? ? ? ? 一一對(duì)應(yīng)? ? ? ? ? printf("打印輸出的內(nèi)容!");? ? ? ? ? %m.nf:(右對(duì)齊!)? ? ? ? ? m:總位數(shù)? ? ? ? ? n:小數(shù)點(diǎn)保留的位數(shù)? ? ? ? ? %-m.n:(左對(duì)齊!)? ? (2)scanf()? ? ? ? ? 按一定格式輸入:? ? ? ? ? scanf("占位符");? ? ? ? ? 一一對(duì)應(yīng)? ? ? ? ? &:取地址符號(hào)? ? ? ? ? ? ? 占位符:? ? ? ? ? ? ? ? ? ? ? ? ? printf()? ? ? ? ? ? scanf()? ? ? ? ? int? ? ? ? ? ? ? %d? ? ? ? ? ? ? ? ? %d? ? ? ? ? char? ? ? ? ? ? ? %c? ? ? ? ? ? ? ? ? %c? ? ? ? ? long? ? ? ? ? ? ? %ld? ? ? ? ? ? ? ? %d? ? ? ? ? float? ? ? ? ? ? %f? ? ? ? ? ? ? ? ? %f? ? ? ? ? double? ? ? ? ? ? %lf? ? ? ? ? ? ? ? %f? ? ? ? ? 字符串? ? ? ? ? ? %s? ? 6.常量? ? 數(shù)字常量:123? 789? 9097? -3.43? ? 字符常量:'d'? '#'? ? '?'? '3'? 'A'? ? ? ? 實(shí)型常量:1.234? 3.1415926? -1.234? ? ? ? ? 字符串常量:由雙引號(hào)括起來的字符序列(由一個(gè)或多個(gè)字符組成)? ? 注意:字符串和字符的區(qū)別? ? 'a'占一個(gè)字節(jié)? ? "a"占兩個(gè)字節(jié)? ? \0字符串的結(jié)束標(biāo)志,一般不顯示? ? "sdgsrhg"? "13ertyu?<@fg"? ? "fg"? ? 7.變量和常量的區(qū)別:? ? 變量:其值可以更改? ? 先定義后使用? ? 常量:其值不可更改? ? ? ? ? 隨時(shí)可以使用,無需定義或聲明? ? 變量的初始化:? ? ? ? 變量名 = 常量;? ? ? ? ? ? ? ? ? ? ? ? 二、運(yùn)算符? ? 1.sizeof? ? (1)計(jì)算大小,得出對(duì)應(yīng)變量或數(shù)據(jù)類型所占內(nèi)存空間大小? ? ? ? 單位:字節(jié)(byte)? ? 1字節(jié) = 8位(bit)? ? ? ? sizeof? Datatype:? ? ? ? 64位機(jī)下:? ? ? ? ? sizeof(char) = 1? ? ? ? ? sizeof(short) = 2? ? ? ? ? sizeof(int) = 4? ? ? ? ? sizeof(long) = 8? ? ? ? ? sizeof(float) = 4? ? ? ? ? sizeof(double) = 8? ? ? ? 32位機(jī)下:? ? ? ? ? 同64位機(jī)? ? ? ? ? sizeof(long) = 4? ? (2)對(duì)應(yīng)變量的內(nèi)存大小:? ? ? ? ? sizeof(ch) = 1? ? ? ? ? sizeof(short_size) = 2? ? ? ? ? sizeof(int_size) = 4? ? ? ? ? sizeof(long_size) = 8? ? ? ? ? sizeof(float_size) = 4? ? ? ? ? sizeof(double_size) = 8? ? 注意(1)(2)的結(jié)果,對(duì)比數(shù)據(jù)類型所占大小,和其定義的變量所占內(nèi)存的大小? ? ? ? ? 2.算術(shù)運(yùn)算符? ? ? ? 加+? 減-? 乘×? 除/? 取余%? ? ? ? 自增:++? 自減:--? ? ? ? ? 自增:++? ? ? ? ? ? ? ++i:先自增,后取值? ? ? ? ? ? ? num = ++i;? ? ? ? ? ? ? ? num = i + 1;? ? ? ? ? ? ? ? num = i;? ? ? ? ? ? ? i++:先取值,后自增? ? ? ? ? ? ? ? ? ? num = i++;? ? ? ? ? ? ? ? num = i;? ? ? ? ? ? ? ? i = i + 1;? ? ? ? ? ? ? ? ? ? ? ? ? 自減:--? ? ? ? ? ? ? ? ? ? ? --i;? ? ? ? ? ? ? i--;? ? 3.關(guān)系運(yùn)算符? ? ? ? 大于:>? ? ? ? ? ? ? a>b:? ? ? ? ? ? ? ? ? ? 若成立則結(jié)果為1? ? ? ? ? ? ? ? ? 不成立則結(jié)果為0? ? ? ? 小于:<? ? ? ? ? ? ? a=
a>=b:
若成立則結(jié)果為1
不成立則結(jié)果為0
小于等于:<=
a<=b:
若成立則結(jié)果為1
不成立則結(jié)果為0
不等于:!=
a!=b:
若成立則結(jié)果為1
不成立則結(jié)果為0
4.逗號(hào)運(yùn)算符(,)
表達(dá)式1,表達(dá)式2,表達(dá)式3
整個(gè)逗號(hào)表達(dá)式的值取決于最后一個(gè)表達(dá)式的值
5.使用scanf()注意事項(xiàng)
(1)一定要嚴(yán)格按照scanf中的格式輸了變量的值
(2)使用scanf()時(shí),取參數(shù)列表中參數(shù)的地址,scanf()是將輸入的值保存到變量對(duì)應(yīng)的地址中
(3)緩存區(qū)文體? scanf()函數(shù)中不能使用換行符:'\n'