文檔鏈接如下:
https://download.csdn.net/download/warkey1998/10817643
部分要點如下:
? ? e或E之前必須有數(shù)字,且e或E后面必須為整數(shù)烛亦,如12.34e-3诈泼。
? ? C語言本身不提供輸入輸出語句。
? ? char a[] = "\\TOP\t\65\""; // 結(jié)果:\TOP? ? 5"
【注】長度為7,大小為8.
? ? 幾個默認(rèn)值的問題:
函數(shù)的默認(rèn)返回類型為 int
默認(rèn)存儲類別為auto
默認(rèn)錯
? ? a煤禽、b 的值分別為 2铐达、3,當(dāng)執(zhí)行運(yùn)算 b+=(++a)+(++a)后檬果,b的值為? 11
相當(dāng)于b=b+a+a;也就是3+4+4=11 自增在前 全部自增完成后才開始賦值
? ? 對于全局變量瓮孙,在程序開始執(zhí)行時給其分配存儲區(qū),程序執(zhí)行完畢就釋放(對)
? ? 對选脊,注意區(qū)分全局變量和局部變量的區(qū)別
? ? 逗號運(yùn)算符的運(yùn)算順序是自左向右的, 如y=((x = 4 * 5, x * 5),x + 25)結(jié)果是45.
a = 2 * 6, a * 3, a + 5;? // 12
s=(a= 2 *6,a*3,a+5)//17
【注意括號作用范圍,不在括號內(nèi)賦值運(yùn)算優(yōu)先計算杭抠,結(jié)果就是第一個的值】
? ? printf(“%d %d%d”,i++,--i,i)//i=0 不同的編譯器其結(jié)果不相同。一般的在printf 函數(shù)中參數(shù)列表是從右到左結(jié)合恳啥。不需深究偏灿,這類題從來不考。
? ? 運(yùn)算符和結(jié)合性:
-i++ 等價于 -(i++)? 結(jié)合順序自右向左,++優(yōu)先級高,故輸出結(jié)果就等于-i
i---i等價于i-- -i 結(jié)果為0
int (*p)[4]表示指向一維數(shù)組的指針,而int *p[4]表示指針數(shù)組
*p++和(*p)++ 意義不同,前者表示下標(biāo)加一,后者表示p指向的數(shù)值加一
b -=b += b*b 等價于b=b-(b=b+(b*b)) 結(jié)果等于0
? ? (int)x強(qiáng)制轉(zhuǎn)換只保留整數(shù)部分,如8.2,8.9結(jié)果都是8
? ? float x = 213.82631; printf(“%3d”, (int)x);其中的3d表示輸出占三位(213),若為4d表示占四位( 213),若所占位數(shù)不足時,依然按照原數(shù)的長度輸出,如2d結(jié)果還是213.
? ? 字母大小寫轉(zhuǎn)換:’a’-32 == ‘A’? ‘A’+32==‘a(chǎn)’
? ? 判斷文件打開是否成功:if((fp=fopen(filename,’r’)==NULL)? printf(“文件打開失敗”);
? ? 程序文件:源文件(.c)钝的、目標(biāo)文件(.obj)翁垂、可執(zhí)行文件(.exe)
? ? 數(shù)據(jù)文件:ASCII文件(文本文件)和二進(jìn)制文件(映像文件)
? ? C語言程序結(jié)構(gòu)有以下特點:
? ? 一個程序由一個或多個源程序文件組成。
? ? 函數(shù)是C語言的主要組成部分
? ? 一個函數(shù)包括兩個部分
? ? 程序總是從main函數(shù)開始執(zhí)行的
? ? 程序中對計算機(jī)的操作是由函數(shù)中的C語句完成的
? ? 在每個數(shù)據(jù)聲明和語句的最后必須有一個分號
? ? C語言本身不提供輸入輸出語句
? ? 程序中應(yīng)當(dāng)包含注釋
? ? 運(yùn)行C語言步驟和方法:
(1)輸入和編輯源程序
(2)對源程序進(jìn)行編譯
(3)進(jìn)行連接處理
(4)運(yùn)行可執(zhí)行程序
? ? 程序=數(shù)據(jù)結(jié)構(gòu)+算法
? ? 算法分為:數(shù)值運(yùn)算算法和非數(shù)值運(yùn)算算法硝桩。
? ? 算法的主要特征:有窮性沿猜、確定性、有零個或多個輸入碗脊、有一個或多個輸出啼肩、有效性。
? ? 算法常用表示方法:自然語言衙伶、傳統(tǒng)流程圖祈坠、結(jié)構(gòu)化的流程圖、偽代碼矢劲。
? ? 圓角矩形表示開始颁虐、結(jié)束;平行四邊形表示輸入輸出框卧须;菱形框表示判斷另绩;普通矩形表示處理儒陨;箭頭表示流程線;圓表示連接點笋籽。
? ? 三大基本結(jié)構(gòu):順序蹦漠、選擇、循環(huán)結(jié)構(gòu)车海。
? ? 判斷素數(shù):
int prime(int n)
{
int i, k= sqrt(n);
for(i=2; i<=k; i++)
{
if(n%i==0)
return 0;
}
if(i>k)
return 1;
else
? ? ? return 0;
}
? ? 求最大公約數(shù)最小公倍數(shù):
? ? int gcd(int a, int b)
{
? ? ? ? ? if (b == 0)
? ? ? ? ? ? ? ? return a;
? ? ? ? ? else
return gcd(b, a%b);
}
int lim(int a, int b)
{
? ? ? ? ? return a * b / gcd(a, b);
}
? ? 采取以下方法得到結(jié)構(gòu)化的程序:
? ? (1)自頂向下
? ? 逐步細(xì)化
? ? 模塊化設(shè)計
? ? 結(jié)構(gòu)化編碼
? ? 符號常量不占內(nèi)存笛园,只是一個臨時的符號。
? ? 在定義枚舉時侍芝,枚舉常量可以是標(biāo)識符或數(shù)字研铆。錯,只能是標(biāo)識符
? ? 將整數(shù)值賦給枚舉變量時不需要作強(qiáng)制類型轉(zhuǎn)換州叠。 錯棵红,需要
? ? 語句*--p;執(zhí)行之后p指向的內(nèi)存單元被改變咧栗。
? ? 宏展開不作語法檢查逆甜,展開時不替換關(guān)鍵字和常量。
? ? C語言采用解釋方式將源程序轉(zhuǎn)換為二進(jìn)制的目標(biāo)代碼致板。編譯不解釋
? ? 數(shù)據(jù)類型:
? ? 基本類型:
? ? ? ? ? ? ? ? 整形類型:int,short int,long int,long long int,char,bool.
? ? ? ? ? ? ? ? 浮點型:float,double,float_complex,double_comple,long long_comple.
? ? 枚舉類型:enum
? ? 空類型:void
? ? 派生類型:指針類型交煞、數(shù)組類型、結(jié)構(gòu)體類型斟或、共用體類型素征、函數(shù)體類型。
? ? 無符號整形數(shù)據(jù)用”%u”格式輸出萝挤。
? ? 自增御毅,自減只能用于變量,不能用于常量或者表達(dá)式平斩。如5++,(a+b)++均不合法亚享。
? ? puts(輸出字符串)咽块,gets(輸入字符串)绘面,getchar(輸入字符),putchar(輸出字符).
? ? “%5d” 表示數(shù)據(jù)占五列
? ? “%o”輸出八進(jìn)制
? ? “%x”輸出十六進(jìn)制
? ? printf("%13.2e",123.456); //? ? 1.23e+002前面四個空格
? ? printf(“%5.2f”,a);//表示數(shù)據(jù)寬度為5,小數(shù)位數(shù)為2
? ? putchar(‘\101’);? // A
? ? putchar(‘\’’);? // 單撇
? ? putchar(‘\015’); // 回車
? ? printf(“%d”,’a’);
? ? 運(yùn)算符優(yōu)先順序:(低→高)
逗號運(yùn)算符è賦值運(yùn)算符è條件運(yùn)算符è||è&&è|è^è&è!=侈沪、==è關(guān)系運(yùn)算符è位移運(yùn)算è算術(shù)運(yùn)算符èsizeof揭璃、取地址、指針亭罪、負(fù)號瘦馍、自減、自加应役、按位取反情组、邏輯非è結(jié)構(gòu)體成員運(yùn)算符燥筷、指向結(jié)構(gòu)體成員的運(yùn)算符、下標(biāo)運(yùn)算符院崇、括號
如:a>b==c ó(a>b)==c
!a+b || a=b>=1 && b+=c%d ó ((!a) + b) || ((a=(b>=1)) && (b+=(c%d)))
相同優(yōu)先級中肆氓,按結(jié)合順序計算。大多數(shù)運(yùn)算是從左至右計算底瓣,只有三個優(yōu)先級是從右至左結(jié)合的谢揪,它們是單目運(yùn)算符、條件運(yùn)算符捐凭、賦值運(yùn)算符拨扶。
? ? 基本的優(yōu)先級需要記住:
? ? 指針最優(yōu)茁肠,單目運(yùn)算優(yōu)于雙目運(yùn)算患民。如正負(fù)號。
? ? 先乘除(模)官套,后加減酒奶。
? ? 先算術(shù)運(yùn)算,后移位運(yùn)算奶赔,最后位運(yùn)算惋嚎。請?zhí)貏e注意:1 << 3 + 2 & 7等價于
? ? (1 << (3 + 2))&&7.
? ? 邏輯運(yùn)算最后計算啄刹。
? ? getchar輸入兩個字符時不能有空格刻盐。
? ? 輸入雙精度浮點數(shù)用“%lf”浪讳。
? ? 條件表達(dá)式:a > b ? a : b? //當(dāng)a>b時拗小,輸出a孵构;否則輸出b姆打。
? ? 判斷閏年:(year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
? ? 判斷浮點數(shù)等于0用fabs(a) <= 1e-6
? ? for(表達(dá)式1亭病,表達(dá)式2逻恐,表達(dá)式3){ 語句 } 循環(huán)執(zhí)行過程:先執(zhí)行表達(dá)式1因悲,再求解表達(dá)式2堕汞,若真則繼續(xù)執(zhí)行循環(huán)體語句,否則結(jié)束循環(huán)晃琳,接下來執(zhí)行表達(dá)式3.
? ? 數(shù)組中的元素都屬于同一種數(shù)據(jù)類型讯检。
? ? 在main函數(shù)中不允許定義(動態(tài)數(shù)組)int a[n],但是在調(diào)用函數(shù)中可以,如下所示:
int fun(int n)
{
int a[n];? //若改為static int a[n],則此處是錯誤的卫旱。
...
}
【注】因為調(diào)用函數(shù)是臨時分配內(nèi)存的人灼,故每次調(diào)用時數(shù)組大小可以改變。
? ? char a[ ] = "china"; ó char a[ ]={‘c’,’h’,’i’,’n’,’a’,’\0’};//也可以char a[]= {"china"}; 系統(tǒng)處理字符串常量時會在末尾自動添加’\0’顾翼,此時數(shù)組長度為5投放,大小為6。
? ? 用新字符串“hello”賦值原字符串“C program”适贸。結(jié)果為hellogram灸芳,原因是沒有加’\0’結(jié)束符涝桅。
? ? 如果數(shù)組長度大于字符串實際長度,也只輸出到遇到’\0’結(jié)束烙样。
? ? puts(str); //會將結(jié)束標(biāo)志’\0’轉(zhuǎn)換成’\n’苹支。因此自動換行。
? ? puts(str)误阻,gets(str)只能輸入輸出一個字符串债蜜。//不允許gets(str1,str2)。
? ? strcpy(str1,”china”)究反;第二個參數(shù)可以為字符串或數(shù)組名寻定,第一個必須為數(shù)組名。
? ? str1=”cabc”; str1=str2; //不能直接賦值精耐,都是非法的狼速。
? ? strncpy(str1,str2,2);將str2中的前兩個字符復(fù)制到str1。
? ? strcmp(str1,str2);比較時按ASCII碼大小比較卦停。如“DOG”<“cat”向胡。
結(jié)果相等時為0,大于為正數(shù)惊完,小于為負(fù)數(shù)僵芹。
? ? 大寫字母轉(zhuǎn)小寫:ch+32; 小寫轉(zhuǎn)大寫:ch-32。
? ? strlwr(str)小槐; //將字符串轉(zhuǎn)小寫
? ? strupr(str)拇派; //將字符串轉(zhuǎn)大寫
? ? 一個c程序由一個或多個程序模塊組成,每個程序模塊作為一個源程序文件凿跳。
? ? 一個源程序文件由一個或多個函數(shù)以及其他有關(guān)的內(nèi)容組成件豌。
? ? C語言執(zhí)行程序從main函數(shù)開始,也是從main函數(shù)結(jié)束控嗜。
? ? 函數(shù)不能嵌套定義茧彤。
? ? 函數(shù)體包括聲明和語句部分。
? ? 形參和實參類型應(yīng)該相同或賦值兼容疆栏。
? ? 實參向形參的數(shù)據(jù)傳遞是“值傳遞”曾掂,單向傳遞,只能由實參傳給形參承边,而不能形參傳給實參遭殉。它們在內(nèi)存中存放的位置不同石挂。
? ? 函數(shù)類型決定返回值類型博助。
? ? float add(int a,int b); //函數(shù)聲明。
? ? int fun(int, float, double);ó int fun(int a, float b, double c);
? ? 一維形參數(shù)組可以指定大小或不指定大小痹愚,兩者本質(zhì)上一樣(編譯系統(tǒng)不檢查其大小富岳,只傳遞數(shù)組首地址)蛔糯,但是二維數(shù)組列數(shù)必須一致,行數(shù)可不一致窖式。
? ? 變量定義的三種情況:
? ? 在函數(shù)的開頭定義
? ? 在函數(shù)的復(fù)合語句內(nèi)定義蚁飒。
? ? 在函數(shù)的外部定義。
? ? 漢諾塔三步驟:
? ? 將A上的n-1個盤借助C座先移到B座上萝喘。// hanoi(n-1,one,three,two);
? ? 將A座上剩下的一個盤移到C座上淮逻。// move(one,three);
? ? 將n-1個盤從B座借助A座移動到C座上。// hanoi(n-1,two,one,three);
? ? 全局變量的缺點:
? ? 全局變量在整個程序執(zhí)行過程中都要占用內(nèi)存阁簸。
? ? 全局變量降低函數(shù)的通用性爬早。
? ? 全局變量降低程序的可讀性。
? ? 全局變量和局部變量同名時:在局部變量的范圍內(nèi)启妹,全局變量被屏蔽筛严。
? ? 變量的存儲有兩種:靜態(tài)存儲方式和動態(tài)存儲方式。
? ? 存儲空間:
? ? 程序區(qū)
? ? 靜態(tài)存儲區(qū)(存放全局變量)
? ? 動態(tài)存儲區(qū)(函數(shù)形式參數(shù)饶米、函數(shù)定義聲明的自動變量桨啃、函數(shù)調(diào)用時的保護(hù)現(xiàn)場和返回地址)
? ? C語言的存儲類別:自動的(auto)、靜態(tài)的(static)檬输、寄存器的(register)照瘾、外部的(extern)。
? ? 每個變量和函數(shù)都有兩個屬性:數(shù)據(jù)類型和存儲類別丧慈。
? ? 靜態(tài)局部變量在編譯時賦初值网杆,且只賦初值一次,在程序運(yùn)行時已有初值伊滋。其在整個運(yùn)行過程中不釋放碳却。
? ? 用static將外部變量的作用域限制在本文件中。
? ? 正確而靈活地使用指針笑旺,可以使程序簡潔昼浦、緊湊、高效筒主。
? ? 簡要陳述指針的優(yōu)缺點
答案: 優(yōu)點:1关噪、提高程序效率;2乌妙、在調(diào)用函數(shù)時當(dāng)指針指向的變量的值改變時使兔,這些值能夠為主調(diào)函數(shù)使用,即可以從函數(shù)調(diào)用得到多個可以改變的值藤韵;3虐沥、可以實現(xiàn)動態(tài)存儲分配
? ? ? ? 缺點:容易出錯,且錯誤往往比較隱蔽,使用不當(dāng)會出現(xiàn)隱蔽的欲险、難以發(fā)現(xiàn)和排除的故障镐依。
? ? 機(jī)器語言和高級語言各有什么特點
機(jī)器語言:能夠被機(jī)器立即識別并加以執(zhí)行,具有執(zhí)行速度快天试,占用內(nèi)存小等優(yōu)點槐壳;但難學(xué)、難記喜每、難以推廣使用务唐。
? ? ? 高級語言:彌補(bǔ)了機(jī)器語言的不足,不依賴于具體機(jī)器带兜,容易理解绍哎,較為方便。
? ? 指針變量只能存放地址鞋真,不能將一個整數(shù)賦值給它崇堰。
? ? p[2]并不一定等于a[2],只有當(dāng)p指向a[0]時才會等。
? ? 字符指針變量指向的字符串常量中的內(nèi)容是不可以改變的涩咖。如:char *p=”Helolo”;? ? p[2]=’r’; //非法
? ? 引用數(shù)組各元素的值三種方法:下標(biāo)法海诲、數(shù)組名計算數(shù)組元素地址、指針變量指向數(shù)組檩互。
? ? 數(shù)組名a是指針常量特幔,無法實現(xiàn)a++。
? ? p[3]=(void ) &a; //p3只是得到了a的純地址闸昨,而沒有指向a蚯斯,故不能輸出*p3。
? ? *(p++) ó * p++? //先取值饵较,后++拍嵌。
? ? *(++p)//先++,再取值循诉。
? ? ++(*p)//p指向元素加一
? ? *(a[i]+j)ó *(*(a+i)+ j)//表示a[i][j]
? ? &a[i]或a+i指向行横辆,而a[i]或*(a+i)指向列。
? ? int (*p)[4] //表示定義一個指針變量茄猫,它指向包含四個整型元素的一維數(shù)組狈蚤。
? ? int *p[4] //表示指針數(shù)組
? ? 若int a[4],int (*p)[4]划纽,則p = &a; //表示指向一維數(shù)組(行)脆侮。寫成p=a是錯誤的,這樣寫表示p的值是&a[0],指向a[0]勇劣。
此時的(*p)[3] ó a[3]靖避。
? ? char *str=”adnd” 的大小為5,最后一個字符存放’\0’,str指向字符串的第一個字符。
? ? char str[]={‘a(chǎn)’,’d’}; //長度為8(此處長度有時不定)筋蓖,大小為2.
? ? char *p; *p=”dumin”; //這是錯誤的,應(yīng)為p=”dumin”;
? ? 特別提示:字符串?dāng)?shù)組復(fù)制時最后要記得加結(jié)束標(biāo)志’\0’。
? ? 字符串題目易錯點:
char p[]="chinese",q[]="dumin";
char *a = p, *b = q;
cout << a << b<<endl;
while ((*(a++) = *(b++)));
cout << a << endl; //結(jié)果:e,因為a已經(jīng)指向了第七個字符的位置了退敦。
cout << p << endl; //結(jié)果:dumin
? ? char str[14]; str=”dhhd”;//錯誤粘咖,數(shù)組名為常量。
? ? 指向函數(shù)的指針:int (*p)(int,int); p = max; c = (*p)(a,b);
【注】:函數(shù)的指針類型是int(*)(int侈百,int)
? ? void *malloc(unsigned int size) //動態(tài)分配一個長度為size的連續(xù)空間
? ? void *callmoc(unsigned n, unsigned size)//分配n個長度為size的連續(xù)空間
? ? void *free(void *p)//釋放空間
? ? void *realloc(void *p,unsigned int size)//重新分配大小
? ? int a=3; int *p1=&a; void *p; p=(void *)p1; cout<<*p<<endl; //錯誤瓮下,p為純地址,不能指向a钝域。
? ? struct Student{
int num;
char name[10];
}s[3] = { { 1, " " }, { 1, " " }, { 1, " " } }; //也可s[3] = {1," ",1," ",1," "};
Student *p;
p = s; //等價于p = &s[0];
cout << p->num << (*p).num << endl; //此處不可以寫成 * p.num
? ? 共用體:幾個變量共享一個內(nèi)存段讽坏。
union Student{
? ? ? int i;
? ? ? double d;
? ? ? float f;
? ? ? char c;
};
Student p = {90};
cout << p.i <<” ”<< p.c << endl; //結(jié)果:90 Z
共用體類型特點如下:
? ? 同一個內(nèi)存段可以用來存放幾種不同類型的成員,但同一時刻只能存放一個例证。
? ? 可對共用體變量初始化路呜,但只能初始化一個。
? ? 共用體變量中起作用的是最后一次被賦值的成員织咧。
? ? 共用體變量的地址和他的各成員的地址都是同一個地址胀葱。
? ? 不能對共用體變量名賦值,也不能企圖引用變量名得到一個值笙蒙。
? ? 以前的c規(guī)定不能用共用體作函數(shù)的參數(shù)抵屿,但是c99允許。
? ? 共用體類型可以出現(xiàn)在結(jié)構(gòu)體類型的定義中捅位,也可以定義共用體數(shù)組轧葛。反之也可。
? ? 枚舉類型:
enum { sum, monday, tue, wed, thu }week; //默認(rèn)值為從0開始艇搀,依次加1尿扯。
【注】若初始時monday=2,則sum=0, tue=3, wed=4, thu=5焰雕。
若初始時sum=1, monday=3姜胖,則tue=4, wed=5, thu=6。
week = monday; //變量賦值
monday = 1; //錯誤淀散,枚舉元素是常量不能被賦值右莱。
? ? typedef類型使用:(相當(dāng)于別名)
? ? typedef int Integer;//此時Integer 等同于int
? ? typedef struct {
? int num;
? int name;
}Data;
Data p;
? ? typedef int Num[100];
Num a;
? ? typedef char * String;
String p, s[10];
? ? typedef int (*Pointer)();
Pointer p1,p2;
? ? 程序文件:源文件(.c)、目標(biāo)文件(.obj)档插、可執(zhí)行文件(.exe)
? ? 數(shù)據(jù)文件:ASCII文件(文本文件)和二進(jìn)制文件(映像文件)
? ? fopen(“shiyan”,”r”); //文件名,打開方式
? ? 常見文件打開方式:
“r”只讀慢蜓,若文件不存在,則出錯郭膛。
“w”只寫晨抡,若文件不存在,則建立新文件。
“a”追加耘柱,若文件不存在如捅,則出錯。
“rb”只讀调煎,若文件不存在镜遣,則出錯。
“wb”只寫士袄,若文件不存在悲关,則建立新文件。
“ab”追加娄柳,若文件不存在寓辱,則出錯。
“r+”讀寫赤拒,若文件不存在秫筏,則出錯。
“w+”讀寫挎挖,若文件不存在跳昼,則建立新文件。
“a+”讀寫肋乍,若文件不存在鹅颊,則出錯。
“rb+” 讀寫墓造,若文件不存在堪伍,則出錯。
“wb+” 讀寫觅闽,若文件不存在帝雇,則建立新文件。
“ab+” 讀寫蛉拙,若文件不存在尸闸,則出錯。
【注】記憶方法:帶“w”的才會創(chuàng)建新文件孕锄,帶“b”的是表示二進(jìn)制文件吮廉,
帶“+”的表示讀寫均可。
? ? 文件讀寫:
FILE *in,*out;
if ((in = fopen("a.txt", "r")) == NULL)
{
? ? ? printf("無法打開文件畸肆!");
? ? ? exit(0);
}
if ((out = fopen("b.txt", "w")) == NULL)
{
printf("無法打開文件宦芦!");
exit(0);
}
char ch;// //讀取單個字符
while (!feof(in)) //如果沒有遇到文件結(jié)束符
{
ch = fgetc(in); //等同于getc(in)
fputc(ch, out); //等同于putc(in)
}
char str[5]; //讀取字符串
while (fgets(str, 5, in)!=NULL)
{
fputs(str,out);
}
fclose(in);
fclose(out);
? ? fread(buffer,size,count,fp);
? ? fwrite(buffer,size,count,fp)轴脐;
? ? fputs(char *s,fp);
? ? fputc(char s,fp);
? ? fgets(char *s,int n,fp);
? ? fgetc(char s,fp);
? ? fprintf(fp,”%d”,a); //文件指針调卑、格式化抡砂、數(shù)據(jù)
? ? fscanf(fp,”%d”,a); //文件指針、格式化恬涧、數(shù)據(jù)
? ? 用二進(jìn)制的形式向文件讀寫一組數(shù)據(jù)的范例代碼:
for (int i = 0; i < 10; i++)
{
scanf("%d%lf",s[i].num,s[i].score);
fwrite(&s[i],sizeof(Student),1,fp); //表示向文件讀入1個Student的數(shù)據(jù)注益。
fread(&s[i],sizeof(Student),1,fp); //表示從文件讀取1個Student的數(shù)據(jù)。
? ? ? }
? ? ? fclose(fp);
? ? rewind(fp); 使文件指針重新指向文件頭溯捆。
? ? fseek(文件類型指針丑搔,位移量,起始點)? //起始點0表示文件開始位置现使,1表示文件當(dāng)前位置低匙,2表示文件的末尾位置旷痕。
示例如下:
fseek(fp,100L,0); //表示移到離文件文件開頭(之后)100個字節(jié)的位置碳锈。
fseek(fp,100L,1); //表示移到離文件文件當(dāng)前位置100個字節(jié)的位置。
fseek(fp,-100L,2); //表示移到離文件文件結(jié)尾(之前)向后100個字節(jié)的位置欺抗。
【注】L表示long 型數(shù)據(jù)售碳。第二個參數(shù)為正數(shù)表示起始點向后的偏移量,負(fù)數(shù)表示偏移量向前的偏移量绞呈。
? ? ftell(fp); //測定文件位置標(biāo)記的當(dāng)前位置贸人。
? ? ferror(fp); //返回為0,表示為出錯佃声;否則出錯艺智。
? ? int a(10); //表示對a賦值
? ? 文件指針指向指針,而文件內(nèi)部指針則是用于標(biāo)記當(dāng)前讀寫位置圾亏。兩者意義不同十拣。
? ? scanf("a=%db=%dc=%d", &a, &b, &c); //此時輸入為:a=1b=2c=3 【不能有空格】
? ? 結(jié)構(gòu)體中:如struct Student s1,*s2; //則只能寫成s1.a或s2→a或 (*s2).a
? ? 文件打開(關(guān)閉)含義:建立(撤銷)相應(yīng)的信息區(qū)和文件緩沖區(qū)。
? ? 指向文件的指針變量并不是指向外部介質(zhì)上的數(shù)據(jù)文件的開頭志鹃,而是指向內(nèi)存中的文件信息區(qū)的開頭夭问。
? ? 宏定義后面不加分號。#define PI 3.14
? ? 宏名與帶參數(shù)的括號之間不能有空格曹铃。#define S(r) PI*r*r? a=S(3);
? ? int a[][4]; //單純的這樣申明是不對的缰趋。
【必須有數(shù)據(jù)初始化,如int a[][4]={1,2,3,4,5,6};】
? ? 邏輯運(yùn)算:
? ? &(與):1&1=1,其他情況均為0.
? ? |(或):有1則結(jié)果為1陕见,否則為0.
? ? ^(異或):同號為0秘血,異號為1.
? ? ~(取反):0變1, 1變0.
? ? ?(左移):乘以2.
? ? ?(右移):除以2.
---------------------
作者:行走的日子
來源:CSDN
原文:https://blog.csdn.net/Warkey1998/article/details/84638405
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接评甜!