传智播客_C提高讲义

内容发布更新时间 : 2025/5/10 6:12:19星期一 下面是文章的全部内容请认真阅读。

欢迎阅读

//改变1级指针(eg char *p = 0x1111 )的值,有2种方式

//改变2级指针的(eg char **pp1 = 0x1111 )的值,有2种方式

//函数调用时,形参传给实参,用实参取地址,传给形参,在被调用函数里面用*p,来改变实参,把运算结果传出来。

//指针作为函数参数的精髓。

铁律3:理解指针必须和内存四区概念相结合

1) 主调函数 被调函数

a) 主调函数可把堆区、栈区、全局数据内存地址传给被调用函数 b) 被调用函数只能返回堆区、全局数据 2) 内存分配方式

a) 指针做函数参数,是有输入和输出特性的。

铁律4:应用指针必须和函数调用相结合(指针做函数参数) 编号 指针函数参数 主调函数 被调函数 备注 内存分配方式(级别+堆栈) 实参 形参 01 1级指针 堆 分配 使用 一般应用(做输入) 禁用 栈 分配 使用 常用 Int showbuf(char *p); int showArray(int *array, int iNum) 02 1级指针 栈 使用 结果传出 常用 (做输出) int geLen(char *pFileName, int *pfileLen); 03 2级指针 堆 分配 使用 一般应用(做输入) 禁用 栈 分配 使用 常用 int main(int arc ,char *arg[]); 指针数组 int shouMatrix(int [3][4], int iLine);二维字符串数组 04 2级指针 堆 使用 分配 常用,但不(做输出) 建议用,转化成02 int getData(char **data, int *dataLen); Int getData_Free(void *data); Int getData_Free(void **data); //避免野指针 05 3级指针 堆 使用 分配 不常用 (做输出) int getFileAllLine(char ***content, int *pLine); int getFileAllLine_Free(char ***content, int *pLine); 指针做函数参数,问题的实质不是指针,而是看内存块,内存块是1维、2维。 1) 如果基础类int变量,不需要用指针; 2) 若内存块是1维、2维。

铁律5:一级指针典型用法(指针做函数参数) 一级指针做输入

int showbuf(char *p)

int showArray(int *array, int iNum) 一级指针做输出 欢迎阅读

欢迎阅读

int geLen(char *pFileName, int *pfileLen); 理解

主调函数还是被调用函数分配内存 被调用函数是在heap/stack上分配内存

铁律6:二级指针典型用法(指针做函数参数) 二级指针做输入

int main(int arc ,char *arg[]); 字符串数组 int shouMatrix(int [3][4], int iLine); 二级指针做输出

int Demo64_GetTeacher(Teacher **ppTeacher); int Demo65_GetTeacher_Free(Teacher **ppTeacher); int getData(char **data, int *dataLen); Int getData_Free(void *data); Int getData_Free2(void **data); //避免野指针 理解

主调函数还是被调用函数分配内存 被调用函数是在heap/stack上分配内存 铁律7: 三级指针输出典型用法 三级指针做输出 int getFileAllLine(char ***content, int *p

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi