api,Application Programming Interface,应用程序接口
api=方法=函数
CS:Client/Server
BS:Browser(浏览器)/Server
灵活与安全的权衡
函数打桩,空壳子函数放在那
只有windows中才有句柄,windows中的句柄是指针的指针,因为windows中对象的经常会在内存中移动(如进行垃圾回收后),所以地址值经常会变,所以就对外提供一个指针的指针即句柄给用户,句柄的地址是不会变的。
linux中, 每当进程打开一个文件时,系统就为其分配一个唯一对应的整型文件描述符(从0开始),用来标识这个文件。linux 操作系统通常对每个进程能打开的文件数量有一个限制。默认是1024。
alt,alternate(v.使交替,使轮换)
ctrl,control
space键,enter键
动态数组,数组中的元素是变量
sizeof不是函数,不需要包含任何头文件,单位为字节
scanf()后,开展读字符类操作(getchar,scanf("%c"),gets()等),用getchar()吃掉缓冲区中的换行:
scanf()函数对回车确认符并不进行处理,回车符会留在输入缓冲区中。
在下一个读字符操作函数(getchar,scanf("%c"),gets()等)运行时,会读到这个字符。——笨
在读数值型数据或字符串时,scanf()会从第一个非空白字符(空白字符指:回车键,空格键,TAB键)开始读取,自动忽略前面的空白字符,直至遇到空白字符结束该类型数据的输入。——巧
①fflush(stdin); //清空输入缓冲区
②getchar();
③scanf("%d%*c", &a ); //%*c表示读一个字符,不赋值给任何变量
1、如果函数参数是指针类型,那么在函数内改变指针指向,并不能影响函数外的指针实例。只有传入指针的指针,才能改变指针的指向。
2、指针是地址变量,在函数里改变地址变量的值时,不会改变主函数实参地址变量的值。只有在函数里改变指针所指向的变量的值时 主函数实参指针所指向的变量的值才会改变。
内存四区:堆区、栈区、全局区(data区,bss区,文字常量区)、代码区
指针等于(指向)谁,就把谁的地址赋值给指针,即指针指向了它的内存地址
p,q皆为指针,p=q,p指向q指向的内存地址
堆区释放,free()时,应养成好习惯将指向该区域的指针置空,p=NULL,因为常用
if(p!=NULL){
free(p);
}来判断堆空间是否释放
释放空间的本质,是告知可用,而不是真正清除该空间的数据。
通过传参(在主函数创建一个变量,将其当做子函数的参数)来读取子函数内的数据
栈的生长方向是从高地址→低地址(不同于其他四区,低地址→高地址)和内存的存放方向(低地址→高地址)相反