C语言学习笔记_void&NULL
C语言学习笔记_void&NULL
API和库函数
API是操作系统系统的接口,用于获取操作系统提供的服务,如读写文件open、write等;
库函数是c语言对操作系统API的封装,如fopen、fwrite;
不同的操作系统具有不同的API,而库函数相同,具有一定的可移植性;
main函数的传参
int main(void);
int main(int argc, char **argv);
int main(int argc, char *argv[]);
调用main函数的父进程给main函数传参,并接收main函数的返回值;
参数如上所示,两个均可以使用;
argc表示参数的长度,argv是一个二维字符数组,保存字符串格式的参数;
void类型
void类型并不是空类型,只是表示暂时不确定此类型;
典型例子如malloc,此函数不确定申请的内存用于存放什么类型,所以返回值为void *
void类型通过强制类型转换成为一个具体类型;
NULL
NULL不是C语言关键字,本质上是一个宏定义:
#ifdef _cplusplus
#define NULL 0
#else
#define NULL (void *)0
#endif
在c++编译环境中,编译器预定义了一个宏_cplusplus,程序可以用条件编译来判断当前的编译环境是c++还是c;
上述定义表示,在c编译环境中,NULL表示指针变量,表示地址0,指向的数据类型为void;
这是因为地址0是操作系统管控的区域,如果不小心解引用了程序会报段错误,防止更改到有效数据;