第一:导言
1. 字符输入输出:ch = getchar(),ch为读入的字符;putchar(ch),输出ch;
2. getline与copy函数,(32)
第二:类型、运算符与表达式
1、 字符常量与仅包含一个字符的字符串区别
2、 枚举eum为一个常量列表,enum boolean(NO, YES...),括号内,从前到后值依次为0,1,2,....
相对于define优势:常量值可自动生成
3、 atoi函数:将字符串转化为整数,遇到非整数字符结束。
4、 rand与srand函数
5、 stract(t,s),把字符串s连接到t后,但是t要足够大
6、 按位运算符:6个,仅用于整形操作(char,int,short,long)
&(按位与): n = n & 0177,n中除7个低二进制外,其余位均为0
|(按位或): x = x | std,将x对应的,std中为1的位置,变为1
^(按位异或): x = x ^ y,x与y,对应位置同则为1,否则为0
<<(左移): x << 2,x左移两位,右空补0—相当于原数乘以4
>>(右移): x >> 2,x右移两位,unsigned:左空补0;signed:左边部分空位符号位填补(算术移位),0填补(逻辑移位);
-(按位求反,一元操作符): x & -077,x后6位设置为0,求整数二进制反码,0变1,1变0;
第三:控制流
1、 goto语句与标号:用于终止深度嵌套处理过程,标号命名方式同变量,作用域为goto所在函数,缺点是不好维护,建议少用
第四:函数与程序结构
1、 strindex()函数
2、 extern:一个程序的外部变量在所有源文件中,只能定义一次,其他文件前加extern表示声明
3、 static:静态变量,与自动变量区别:都只在其声明的函数体内使用;但static无论函数是否被调用,都占据存储空间;
4、 寄存器变量:register int x;适用于自动变量或形参,告诉编译器这个声明的变量程序中使用很频繁
5、 程序块结构:不允许函数中定义函数,但可定义变量,需紧跟左花括号,符合语句也可以,作用域为花括号内
6、 宏替换:#define 名字 替换文本 ,替换文本是任意的,例如for(;;),三目运算,printf(”“)表达式,等等
第五:指针与数组
1、 指针:int a[10] = {1,2,3,0};int *p = a; p指向a[0], p+1指向a[1], p+i,指向第i元素;*(p+i)等价p[i];
2、 指针与数组名区别:指针为变量,可进行p = a, p++都合法;数组名非变量,a= p, a++非法;
3、 指针数组以及指向指针的指针
4、 指针数组初始化:
char month_name(int n)
{
static char *name[] = {"illegal month","January"...};
return n < 1 || n > 12 ? name[0]:name[n];
}
5、 命令行参数:int main(int argc, char *argv[]){}
argc: 参数技术,表示运行程序时命令行参数数目,常至少为1,因必须启动程序名
argv: 参数向量,是指向字符串数组的指针,每个字符串对应一个指针 ,argv[argc-1]与
字符串对应,ANSI要求argv[argc]为空指针
6、 函数指针
第六:结构体
1、 结构与函数:struct {int len; char *str;}*p;区分:++p->len(对p指的len+1),(++p)->len(p+1再指len),
(p++)->len(p指len,p再+1)区别
struct point makepoint(int x, int y){struct point temp; temp.x = x;return temp;}
2、 结构与数组:struct key{char *word; int count;}keytab[NKEYS](可初始化,={“hehh”,5,"hihi",7,....});
阅读(1400) | 评论(0) | 转发(0) |