学过C语言,自己又再次复习了一次,这次重点记下自己模糊、忘记的知识。
一.宏定义的使用
宏定义它只是一个替换的作用,不具有运算功能。
例如
#define A 1
#define B A+A
int c=10,d;
d=A+B*c+A;
这里的B*c其实是c*A+A,而不是c*(A+A),只有替换作用,所以定义的是什么就直接还过去,不做计算。
二.auto与register
auto是局部变量,在函数体或复合语句中使用后在其他范围为外部不可使用
auto int A 如果初值没有赋值则是随机值
register 寄存器型,必须是一个单个值,不可以使用&来获取register变量的地址
三.static与extern
static 默认值是0,它会记住当前循坏值,再其他文件不可用,不可以extern调用
if(i=0;i<5;i++)
{
static a=1;
a+=2;
}
第一次进入if循环a=3;当再进a=3而不是1;
extern 可以调用其他文件中说明的变量,除了static说明的变量
四.运算符
1.float与double定义的变量不可以取余
2. &&遇到零就停止不往后预算,A&&B+A,如果A是0则不在进行B+A的运算
3. ||遇到1就截止
4. ^按位异或,相同为假(0)不同为真(1)
5.条件算数符“?”
<表达式1>?<表达式2>:<表达式3>
当表达式1为真时,运算表达式2,为假时云顺表达式3
6.逗号运算符“,”
最后一个表达式的值为整个表达式的值,如
int x=5,y=2,a=5,z;
z=(x+=5,y=x+0.8,a=x+y);最后为z=x+y;
z=x>y,x+y;注意赋值的优先级大于逗号运算符,所以把x>y为真的1赋值给z
五.putchar(C)与sizeof用法注意事项
C可以是字符常量、变量、表达式
sizeof只针对数据类型不针对变量
六.%C与%p
%p取地址
空格、转义字符作为有效字符输出
“0”的ascci码值是48
七.输入函数的垃圾清除方法
可以用getchar( )吸收掉
“%*c”或者空格吸收
八.goto loop
可以无条件的跳转
减少嵌套
优化程序
九.字符与字符串的联系
字符 ‘a’ ‘b’ ‘c’与 字符串”a” “b” “c”
当字符加上‘/0’时就与字符串相等
十.字符串函数与使用注意
只有又头文件#include<string.h>时才可以使用字符串函数
strlen 求长度,不含‘/0’
strcpy 拷贝 strcpy(str,der)从右边考到左边
strncpy (p,pl,n)复制指定长度(n)字符串 strncpy(hello,word,3) 得到worlo
strcat 串接
strncat(p,pl,n)附加指定长度的字符串
strcmp 比较 遇到不同字符或”/0“停止
strcamp(p,pl,n)比较指定长度字符串
strcasem(p,pl,n)忽略大小写字母比较字符串
if字符串1<字符串2 返回负数
if字符串1>字符串2 返回正数
if字符串1=字符串2 返回0