C語言細節

2021-10-22 16:14:22 字數 1808 閱讀 2190

a=b++先賦值再自增;a=++b先自增再賦值;

(float)6/4是1.500000;(float)(6/4)是1.000000;

原始檔.c;目標程式.obj;執行程式.exe;都是二進位制檔案;

源程式以ascii**形式存於文字檔案;

c程式演算法可無輸入必須要有輸出;

三種基本結構可以完成任何複雜的任務;

大括號內是復合語句;

c語言基本組成單位:語句;

0%2==0;1%2==1;-10%2==0;-10%-2==0;10%-2==0;-11%2==-1;11%-2==1;-11%-2==-1;1.0%2和1%0.2錯誤

%03d至少三位輸出,不夠填0;%.3f保留3位小數不夠填0;

switch內case無break後面將一直執行;

&&優先順序高於||;

100>90>2是0;相當於1>2;

函式不定義返回值型別,預設int;

函式內static只在第一次呼叫賦值,以後再呼叫不在賦值,函式結束後記憶體不被**;

實參可以常量、變數、表示式,形參只能變數;

double型別只能lf,不然可能出錯;

printf("%d",(1,2,3));輸出3;

計算機處理、儲存、計算所有資訊都是二進位制,所有位運算要比正常快點;

1位元組=8位元;

浮點小數點後預設6位;

%ddd八進位制,%xhh十六進製制;%o八進位制,%x十六進製制;

『0』==0字串自動在結尾加,strlen唯讀到第乙個『0』;' '==32;

a=a+(a=10); 相當於a==20;

陣列名常量,存放陣列記憶體空間首位址,不可賦值;

char a="abc",sizeof為4;char a[3]="abc"報錯;

位址不是整數,需要強制(int)後是整數,不可直接給指標賦值整數;

++p和++p不同;

結構體後要用分號,因為是語句;

.成員運算子;->指向運算子;

結構體可以直接a==b賦值;

以陣列為引數會改值,以結構體為引數不改值;

巨集是替換不是函式,巨集在編譯預處理時完成,函式在編譯中執行;

編譯預處理:條件編譯、巨集定義、檔案包含;

(a+1)==a0;(a+1)==a1;a+1==a0+1;

二維陣列a==&a[0],a[0]==&a0,a==&&a0;

*a==a[0]==a0;*a=&a[0];

%s和%c一起輸入要getchar();

單鏈表末尾要有null;

fp指向記憶體緩衝區(記憶體單元);不能fp++;是順序性的;

file型別結構單元16b,緩衝區單元512b,寫滿進入磁碟扇區;

fclose(fp)==0正常關閉;feof(fp)==1檔案結束;eof==-1;

strcat認到0開始逐字元覆蓋;

fseek(fp,-20l,2)距離檔案尾部20位元組處,0首1現2尾;

w+、w完全覆蓋,文字清空後重寫;r+逐字覆蓋;rewind後w,r+,w+逐字覆蓋;a,a+永遠追加;

char a[4];a[2]='3';strlen(a)==0;

檔案由資料流組成;

a=b=4=8錯誤;b+3=9錯誤;

函式內部不可以定義函式,只能宣告,呼叫;

-a=b=c=8;a=(b+=c,++c);a,b,c為9169;

int (a)[10],b[10];a是乙個指標,要用只能指向二維陣列,b是一維指標型陣列,b[0]是乙個陣列;

sizeof("tn0")==4;

sizeof("")==1,sizeof(" ")==2;

C語言細節

參考 注釋必須和 一起維護,不應該描述顯而易見的事,或把別的地方已說清楚的東西在說一遍。字面常量沒有語義,也沒有真正的記憶體位址。所以不可以取其位址,也不可以用於初始化普通引用,例如 long r1 40000 但是const long r1 40000 卻是合法的。所以,盡量不要使用字面常量,而應...

C語言細節

1.c誰呼叫了main函式 linux執行乙個程式就是建立乙個新程序,然後把這個程式丟到這個程序中執行直到結束。linux通過.task執行程式,新程序作為命令程序的乙個子程序執行。main函式的返回值最終會返回給父程序。父程序的引數傳遞給子程序。2.void型別的本質 void的意思是乙個變數還不...

C 語言細節總結

include intmain int int2 10 double double1 double double2 10 printf sizeof str1 d,sizeof str2 d r n sizeof str1 sizeof str2 printf sizeof int1 d,sizeo...