传入参数与传出参数
一层指针的参数
如果函数接口有指针参数,既可以把指针所指向的数据传给函数使用(称为传入参数),也可以由函数填充指针所指的内存空间,传回给调用者使用(称为传出参数)。有些函数的指针参数同时担当了这两种角色,既是传入参数又是传出参数,这称为Value-result参数。
传入参数
void func(const unit_t *p);
调用者 |
实现者 |
|
|
传出参数
void func(unit_t *p);
调用者 |
实现者 |
|
|
Value-result参数
void func(unit_t *p);
调用者 |
实现者 |
1. 分配p所指的内存空间 2. 在p所指的内存空间保存数据 3. 调用函数 4. 读取p所指的内存空间 |
1. 规定指针参数的类型unit_t * 2. 读取p所指的内存空间 3. 改写p所指的内存空间 |
两层指针的参数
两层指针也是指针,同样可以表示传入参数、传出参数或者Value-result参数,只不过该参数所指的内存空间应该解释成一个指针变量。
两层指针作为传出参数还有一种特别的用法,可以在函数中分配内存,调用者通过传出参数取得指向该内存的指针:
调用者 |
实现者 |
|
|