C语言复习
fflush()
fflush(stdin):刷新缓冲区,将缓冲区内的数据清空并丢弃
fflush(stdout):刷新缓冲区,将缓冲区内的数据输出到设备
gets()
gets(str) 约等于 scanf("%s",&str) 会把读到的字符串写入数组,区别:
- scanf("%s",&str) :读到空格便停止。
- gets(str) :一直读到敲回车(不管中间是否有空格)
extern
extern用于声明变量或者定义变量。声明变量的时,这个extern必须添加在变量前,而变量前有extern不一定就是声明,变量前无extern则只能是定义。注:定义要为变量分配内存空间;而声明不需要为变量分配内存空间。
自增、自减
++i : i 自增 1 后再参与其它运算。
--i : i 自减 1 后再参与其它运算。
i++ : i 参与运算后, i 的值再自增 1。
i-- : i 参与运算后, i 的值再自减 1。
do-while
do
循环语句
while(表达式);
先执行循环体中的语句,再通过判断表达式的值来决定是否继续循环
exit()
exit为C++的退出函数;
函数格式:void exit(int value);
exit的功能为:退出当前运行的程序,并将参数value返回给主调进程;在main中“ return v; ”的效果与“ exit(v); ”相同。
exit(1)和exit(-1) 是分别返回1和-1到主调程序; exit(0)则是返回0;exit(0)表示程序正常退出,非0表示非正常退出。
exit(0),exit(1) 和 exit(-1)的区别.
fseek()
int fseek( FILE *stream, long offset, int origin );
- 第一个参数stream为文件指针
- 第二个参数offset为偏移量,整数表示正向偏移,负数表示负向偏移
- 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END 或 SEEK_SET
SEEK_SET: 文件开头
SEEK_CUR: 当前位置
SEEK_END: 文件结尾
其中SEEK_SET,SEEK_CUR和SEEK_END和依次为0,1和2. - 例子:
fseek(fp,100L,0);把fp指针移动到离文件开头100字节处;
fseek(fp,100L,1);把fp指针移动到离文件当前位置100字节处;
fseek(fp,100L,2);把fp指针退回到离文件结尾100字节处。
fread()
函数原型:
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
参 数:
- buffer 用于接收数据的内存地址
- size 要读的每个数据项的字节数,单位是字节
- count 要读count个数据项,每个数据项size个字节.
- stream 输入流
malloc()
开辟动态存储空间函数原型:
void * malloc(unsigned int size);
功能:
在内存的动态存储区分配一个长度为size字节的连续空间,返回值是所分配存储区域的第一个字节的地址。
指针变量的引用
“ & ”与“ * ”:
- “ & ”是取地址运算符,&a 是取变量a的地址
- “ * ”是间接引用运算符,其后跟指针变量,是取该指针变量所指向的数据,如,int *p 表示指针变量所指向的数据。
int main()
{
int *p1, *p2, a, b;
a = 2, b = 8;
p1 = &a;
p2 = &b;
printf(" p1 = %d, p2 = %d \n", *p1, *p2);
printf("输出地址 p1 = %d, p2 = %d \n", p1, p2);
}
上段程序输出结果:
- p1 = 2, p2 = 8
- 输出地址 p1 = 12FF7C, p2 = 12FF78 (地址随取,表达大概意思)
u8 & unsigned int
- u8 定义的变量为8位,没有符号位
- unsigned int 占用 4 个字节,即:32b,无符号位。
- int 占用 4 个字节,即:32b,有符号位:从左数第一位。
const
const修饰的量为一个常量即不能被修改的量
static关键字
-
作用于变量:
用static声明局部变量:局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),该局部变量有记忆功能,可以记忆上次的数据。
用static声明外部变量:外部变量指在所有代码块{}之外定义的变量,它缺省为静态变量,编译时分配内存,程序结束时释放内存单元。其作用域很广,整个文件都有效甚至别的文件也能引用它。 -
作用于函数:
使用static用于函数定义时,叫作静态函数,函数只在本文件内部有效,对其他文件是不可见的。好处是不用担心与其他文件的同名函数产生干扰,另外也是对函数本身的一种保护机制。