1.1 C程序的结构
1.1.1 main例程
所有c程序都有一个main例程。在OS加载第一个C程序后,程序开始执行main例程中的第一行代码。
int main(int argc, const char *argv[])
{
return 0;
}
关键特性包括:
- 第一行上的指导int提升main给OS返回一个整形值,作为返回代码
- main是必需的
- main接收argc个参数,存储在数组argv中
- return 0; 指示将0作为返回代码传给OS
简化形式:
int main (void)
{
}
1.1.2 格式化
语句用分号;终止
1.1.3 注释
经典注释//
封闭注释 /* */
1.1.4 变量和函数名称
- 首字符采用下划线或字母
以下划线开头的名称传统上用于打算设置为私有的或者供内部使用的变量和函数
_privateVariable
- 名称区分大小写,且不能有任何空白
- 驼峰式命名方式
1.1.5 文件
朴素的C程序代码放在一个或多个拓展名为.c的文件中
ACProgram.c
使用Object-C对象的代码放在一个或多个拓展名为.m的文件中
AnObjectiveProgram.m
C程序还使用头文件,头文件通常包含可以被许多.c和.m文件共享的多种定义。通过使用#include或#import预处理指令
AHeaderFile.h
1.2 变量
变量声明形式如下:
variabletype name;
C语言允许在单个声明中声明多个变量:
variabletype name1,name2,name3;
1.2.1 整形
C语言提供了以下类型用于保存整数:char、short、int、long、long long.
可以把整形声明为unsigned:
unsigned char a;
unsigned short b;
unsigned int c;
unsigned long d;
unsigned long long e;
单独使用unsigned时,意指 unsigned int:
unsigned a; // a is an unsigned int
unsinged通常赋值为正数。
1.2.2 浮点型
浮点型是float、double、long double
浮点值总是带符号的
float aFloat;
double aDouble;
long double aLongDouble;
1.2.3 真值
普通的表达式通常用于真值。求值为0的表达式被视为“假”,而求值为非0的表达式视为“真”
1.2.4 初始化
可以在声明变量时初始化它们:
int a=9;
int b=2*4;
float c=3.14159;
char d='a';
1.2.5 指针
指针是其值为一个内存地址的变量。它“指向”内存中的某个位置。
声明一个指针,在变量名称前面放置一个*
int *pointerVar;
泛型指针
如果一个变量被声明为指向void的指针,那它成为泛型指针。
int a=9;
int b;
void *genericPointer;
genericPointer = &a;
b = *(( int *) genericPointer );
上例使用强制转换运算符(int *)强制编译器把genericPointer视作一个指向整数的指针。
1.2.6 数组
C数组是同类型元素的有序集合。
int a[100];
通过下面的方式访问各个元素
a [6] = 9;
1.2.7 多维数组
声明方式如下:
int b[4][10];
多维数组以线性方式逐行存储在内存中。
使用指针表示法:
b[i][j]
可能写作:
*(b+i*10+j)
1.2.8 字符串
C语言的字符串是字节的一维数组,并利用0字节终止。
char *aString ="Hello";
aString = "World";
1.2.9 结构
结构可以成为单个实体的相关变量的集合。
struct dailyTemperatures
{
float high;
float low;
int year;
int dayOfYear;
}
结构中各个变量称为成员变量。
关键字struct后面的名称是结构标签。
结构可以具有其他结构作为成员。
struct hiLow
{
float high;
float low;
};
struct dailyTemperatures
{
struct hiLow tempExtremes;
int year;
int dayOfYear;
};
这样,设置today的高温将如下显示
struct dailyTemperatures today;
today.tempExtremes.high=68.0;
1.2.10 typedef
typedef声明提供了一种用于为变量类型创建别名的方式:
typedef float Temperature;
Temperature可用于声明变量,就像它是内置的类型之一一样:
Temperature high,low;
1.2.11 枚举常量
enum语句允许定义一组整形常量:
enum woodwind { oboe,flute,clarinet,bassoon };
上句的结果是:obue、flute、clarinet、bassoon分别是值为0、1、2、3的常量。
enum后面的名称成为枚举标签。