簡(jiǎn)單程序的結(jié)構(gòu)
int main(void) ? ?//函數(shù)頭
{//函數(shù)體
? ? ? ? ? ? 語(yǔ)句;
? ? ? ? ? ?return 0;
}
注:大部分的語(yǔ)句都是以分號(hào)(;)結(jié)束,還有必須是英文狀態(tài)下輸入符號(hào)。
可讀性
寫(xiě)程序必須要有可讀性,不然明天也許你就忘了那行代碼是什么意思,然后從頭開(kāi)始看,浪費(fèi)時(shí)間。
保持注釋,定義變量要來(lái)做什么,可以注釋說(shuō)明,這樣下次再看的時(shí)候能迅速知道,而且當(dāng)需要?jiǎng)e人閱讀你的代碼的時(shí)候,別人也會(huì)懂。
規(guī)定格式,保持縮進(jìn)(tab鍵縮進(jìn)),當(dāng)你寫(xiě)短的代碼的時(shí)候還不會(huì)怎么樣,但當(dāng)你寫(xiě)大量代碼的時(shí)候,如果沒(méi)有格式,你就會(huì)亂七八糟的,看都看不懂自己在寫(xiě)什么
如:
int main()
{
? ? ? ? ? if(....)
? ? ? ? ? {
? ? ? ? ? } ? ? ? ? ? //這樣保持一定的格式,知道什么時(shí)候開(kāi)始,什么時(shí)候結(jié)束。
}
多個(gè)函數(shù)
#include<stdio.h>
void call(void); ? //聲明函數(shù),這樣才能調(diào)用函數(shù)。
int main()
{
? ? ? ? ?printf("接下來(lái)調(diào)用函數(shù)\n");
? ? ? ? ?call();// 調(diào)用函數(shù)
? ? ? ? ?return 0;
}
void call(void)
{
? ? ? ?printf("這里是被調(diào)用的函數(shù),返回值是空,所以不用return,第二個(gè)(void)是不帶參數(shù)的意思\n");
}
編譯完執(zhí)行就會(huì)出現(xiàn)

我并沒(méi)有在 printf("接下來(lái)調(diào)用函數(shù)\n");寫(xiě)這個(gè)。而是寫(xiě)了call();? 因?yàn)榍懊媛暶髁撕瘮?shù),所以才可以調(diào)用,因?yàn)榫幾g器是自上到下編譯的。寫(xiě)到這里,大概有人想到了,把void call(void)函數(shù)寫(xiě)在main的前面,這樣就可以不用聲明也可以調(diào)用了。但一般有大量代碼的一般會(huì)把調(diào)用的函數(shù)寫(xiě)在其他文件里這里就需要自己寫(xiě)一個(gè)頭文件來(lái)定義,然后預(yù)編譯這個(gè)頭文件(#include"你的寫(xiě)頭文件.h")但需要把這個(gè)函數(shù)聲明extern,這樣外部文件也能調(diào)用。
C語(yǔ)言保留關(guān)鍵字和保留標(biāo)識(shí)符
auto ? ? ? ?extern ? ? short ? ? ? while ?
break ? ? ?float ? ? ?signed ? ? _Alignas ? ?
case ? ? ??for ? ? ? ? sizeof ? ?_Alignof ? ?
char ? ? ? ?goto ? ? ?static ? ? ?_Atomic
const ? ? ? if ? ? ? ? ? struct ? ? ?_Bool
continue ?inline ? ?switch ? _Complex
default ? ?int ? ? ? ?typedef ? ? _Generic
do ? ? ? ?long ? ? ?union ? ? _Imaginary
double ? ?register ? ? unsigned ? ? _Noreturn
else ? ? ? ? restrict ? ? ?void ? ? ? ? ?_Static_assert
enum ? ? ? return ? ? ?volatile ? ? _Thread_local
粗體表示c90新增的關(guān)鍵字,斜體表示c99標(biāo)準(zhǔn)新增的關(guān)鍵字,粗斜是C11新增的關(guān)鍵字。
數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型占用內(nèi)存:
32位編譯器:
char :1個(gè)字節(jié) ? ? 字符型
char*(即指針變量): 4個(gè)字節(jié)(32位的尋址空間是2^32, 即32個(gè)bit,也就是4個(gè)字節(jié)。同理64位編譯器) ?
short int : 2個(gè)字節(jié) ?短整型 ?-------------取值范圍: -32768~32767
int: 4個(gè)字節(jié)? ? 整型? ? -----------------取值范圍:-2147483648~2147483647
unsigned int : 4個(gè)字節(jié) ? 正整型
float: 4個(gè)字節(jié)? ? ? 浮點(diǎn)型(就是小數(shù)型)? 取值范圍:0以及1.2*10^(-38) ~ 3.4*10^(38)
double: 8個(gè)字節(jié)? ? 雙精度浮點(diǎn)型(還是小數(shù)型,不過(guò)內(nèi)存占用比f(wàn)loat多一倍。) 取值范圍:0以及1.2*10^(-308) ~ 3.4*10^(308)
long: 4個(gè)字節(jié) ??
long long: 8個(gè)字節(jié)
unsigned long: 4個(gè)字節(jié)
64位編譯器:
char :1個(gè)字節(jié)
char*(即指針變量): 8個(gè)字節(jié)
short int : 2個(gè)字節(jié)
int: 4個(gè)字節(jié)
unsigned int : 4個(gè)字節(jié)
float: 4個(gè)字節(jié)
double: 8個(gè)字節(jié)
long: 8個(gè)字節(jié)
long long: 8個(gè)字節(jié)
unsigned long: 8個(gè)字?