簡單程序的結構
int main(void) ? ?//函數頭
{//函數體
? ? ? ? ? ? 語句;
? ? ? ? ? ?return 0;
}
注:大部分的語句都是以分號(;)結束,還有必須是英文狀態下輸入符號。
可讀性
寫程序必須要有可讀性,不然明天也許你就忘了那行代碼是什么意思,然后從頭開始看,浪費時間。
保持注釋,定義變量要來做什么,可以注釋說明,這樣下次再看的時候能迅速知道,而且當需要別人閱讀你的代碼的時候,別人也會懂。
規定格式,保持縮進(tab鍵縮進),當你寫短的代碼的時候還不會怎么樣,但當你寫大量代碼的時候,如果沒有格式,你就會亂七八糟的,看都看不懂自己在寫什么
如:
int main()
{
? ? ? ? ? if(....)
? ? ? ? ? {
? ? ? ? ? } ? ? ? ? ? //這樣保持一定的格式,知道什么時候開始,什么時候結束。
}
多個函數
#include<stdio.h>
void call(void); ? //聲明函數,這樣才能調用函數。
int main()
{
? ? ? ? ?printf("接下來調用函數\n");
? ? ? ? ?call();// 調用函數
? ? ? ? ?return 0;
}
void call(void)
{
? ? ? ?printf("這里是被調用的函數,返回值是空,所以不用return,第二個(void)是不帶參數的意思\n");
}
編譯完執行就會出現
我并沒有在 printf("接下來調用函數\n");寫這個。而是寫了call();? 因為前面聲明了函數,所以才可以調用,因為編譯器是自上到下編譯的。寫到這里,大概有人想到了,把void call(void)函數寫在main的前面,這樣就可以不用聲明也可以調用了。但一般有大量代碼的一般會把調用的函數寫在其他文件里這里就需要自己寫一個頭文件來定義,然后預編譯這個頭文件(#include"你的寫頭文件.h")但需要把這個函數聲明extern,這樣外部文件也能調用。
C語言保留關鍵字和保留標識符
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新增的關鍵字,斜體表示c99標準新增的關鍵字,粗斜是C11新增的關鍵字。
數據類型
數據類型占用內存:
32位編譯器:
char :1個字節 ? ? 字符型
char*(即指針變量): 4個字節(32位的尋址空間是2^32, 即32個bit,也就是4個字節。同理64位編譯器) ?
short int : 2個字節 ?短整型 ?-------------取值范圍: -32768~32767
int: 4個字節? ? 整型? ? -----------------取值范圍:-2147483648~2147483647
unsigned int : 4個字節 ? 正整型
float: 4個字節? ? ? 浮點型(就是小數型)? 取值范圍:0以及1.2*10^(-38) ~ 3.4*10^(38)
double: 8個字節? ? 雙精度浮點型(還是小數型,不過內存占用比float多一倍。) 取值范圍:0以及1.2*10^(-308) ~ 3.4*10^(308)
long: 4個字節 ??
long long: 8個字節
unsigned long: 4個字節
64位編譯器:
char :1個字節
char*(即指針變量): 8個字節
short int : 2個字節
int: 4個字節
unsigned int : 4個字節
float: 4個字節
double: 8個字節
long: 8個字節
long long: 8個字節
unsigned long: 8個字?