1.1 C程序的結(jié)構(gòu)
1.1.1 main例程
所有c程序都有一個main例程玻褪。在OS加載第一個C程序后蛉顽,程序開始執(zhí)行main例程中的第一行代碼。
int main(int argc, const char *argv[])
{
return 0;
}
關(guān)鍵特性包括:
- 第一行上的指導(dǎo)int提升main給OS返回一個整形值,作為返回代碼
- main是必需的
- main接收argc個參數(shù)咪橙,存儲在數(shù)組argv中
- return 0; 指示將0作為返回代碼傳給OS
簡化形式:
int main (void)
{
}
1.1.2 格式化
語句用分號;終止
1.1.3 注釋
經(jīng)典注釋//
封閉注釋 /* */
1.1.4 變量和函數(shù)名稱
- 首字符采用下劃線或字母
以下劃線開頭的名稱傳統(tǒng)上用于打算設(shè)置為私有的或者供內(nèi)部使用的變量和函數(shù)
_privateVariable
- 名稱區(qū)分大小寫聂宾,且不能有任何空白
- 駝峰式命名方式
1.1.5 文件
樸素的C程序代碼放在一個或多個拓展名為.c的文件中
ACProgram.c
使用Object-C對象的代碼放在一個或多個拓展名為.m的文件中
AnObjectiveProgram.m
C程序還使用頭文件果善,頭文件通常包含可以被許多.c和.m文件共享的多種定義。通過使用#include或#import預(yù)處理指令
AHeaderFile.h
1.2 變量
變量聲明形式如下:
variabletype name;
C語言允許在單個聲明中聲明多個變量:
variabletype name1,name2,name3;
1.2.1 整形
C語言提供了以下類型用于保存整數(shù):char系谐、short巾陕、int、long纪他、long long.
可以把整形聲明為unsigned:
unsigned char a;
unsigned short b;
unsigned int c;
unsigned long d;
unsigned long long e;
單獨(dú)使用unsigned時鄙煤,意指 unsigned int:
unsigned a; // a is an unsigned int
unsinged通常賦值為正數(shù)。
1.2.2 浮點型
浮點型是float茶袒、double梯刚、long double
浮點值總是帶符號的
float aFloat;
double aDouble;
long double aLongDouble;
1.2.3 真值
普通的表達(dá)式通常用于真值。求值為0的表達(dá)式被視為“假”薪寓,而求值為非0的表達(dá)式視為“真”
1.2.4 初始化
可以在聲明變量時初始化它們:
int a=9;
int b=2*4;
float c=3.14159;
char d='a';
1.2.5 指針
指針是其值為一個內(nèi)存地址的變量亡资。它“指向”內(nèi)存中的某個位置澜共。
聲明一個指針,在變量名稱前面放置一個*
int *pointerVar;
泛型指針
如果一個變量被聲明為指向void的指針沟于,那它成為泛型指針咳胃。
int a=9;
int b;
void *genericPointer;
genericPointer = &a;
b = *(( int *) genericPointer );
上例使用強(qiáng)制轉(zhuǎn)換運(yùn)算符(int *)強(qiáng)制編譯器把genericPointer視作一個指向整數(shù)的指針。
1.2.6 數(shù)組
C數(shù)組是同類型元素的有序集合旷太。
int a[100];
通過下面的方式訪問各個元素
a [6] = 9;
1.2.7 多維數(shù)組
聲明方式如下:
int b[4][10];
多維數(shù)組以線性方式逐行存儲在內(nèi)存中展懈。
使用指針表示法:
b[i][j]
可能寫作:
*(b+i*10+j)
1.2.8 字符串
C語言的字符串是字節(jié)的一維數(shù)組,并利用0字節(jié)終止供璧。
char *aString ="Hello";
aString = "World";
1.2.9 結(jié)構(gòu)
結(jié)構(gòu)可以成為單個實體的相關(guān)變量的集合存崖。
struct dailyTemperatures
{
float high;
float low;
int year;
int dayOfYear;
}
結(jié)構(gòu)中各個變量稱為成員變量。
關(guān)鍵字struct后面的名稱是結(jié)構(gòu)標(biāo)簽睡毒。
結(jié)構(gòu)可以具有其他結(jié)構(gòu)作為成員来惧。
struct hiLow
{
float high;
float low;
};
struct dailyTemperatures
{
struct hiLow tempExtremes;
int year;
int dayOfYear;
};
這樣,設(shè)置today的高溫將如下顯示
struct dailyTemperatures today;
today.tempExtremes.high=68.0;
1.2.10 typedef
typedef聲明提供了一種用于為變量類型創(chuàng)建別名的方式:
typedef float Temperature;
Temperature可用于聲明變量演顾,就像它是內(nèi)置的類型之一一樣:
Temperature high,low;
1.2.11 枚舉常量
enum語句允許定義一組整形常量:
enum woodwind { oboe,flute,clarinet,bassoon };
上句的結(jié)果是:obue供搀、flute、clarinet钠至、bassoon分別是值為0葛虐、1、2棉钧、3的常量屿脐。
enum后面的名稱成為枚舉標(biāo)簽。