基于指针的数据传递与返回方法探讨
二、通过指针传递和返回数据
1. 用指针来传递数据
在函数中使用指针变量作为参数来传递数据,可以在函数中修改数据。如果不需要修改数据,则应将指针变量限制为const类型。典型的函数应用如下:`char *strcpy(char *dest, const char *src);`如果函数通过值传递数据,则无法在函数中修改数据。
2. 返回指针
需要返回的类型是某种数据类型的指针。从函数返回指针存在以下问题:
A. 返回未初始化的指针
B. 返回指向无效地址的指针
C. 返回局部变量的指针
D. 返回指针但未释放内存
从函数返回动态分配的内存时,使用完内存后必须释放,否则会导致内存泄漏。函数返回局部数据的指针或局部变量是错误的,因为函数返回后,局部数据所在的栈帧将被弹出程序栈,栈帧上的数据易被后续调用函数的栈帧覆盖。通过将局部变量声明为static类型,可以将其作用域限定在函数内部,但分配在栈外(数据段),从而避免局部数据被其他函数的栈帧覆盖。
1. 用指针来传递数据
在函数中使用指针变量作为参数来传递数据,可以在函数中修改数据。如果不需要修改数据,则应将指针变量限制为const类型。典型的函数应用如下:`char *strcpy(char *dest, const char *src);`如果函数通过值传递数据,则无法在函数中修改数据。
2. 返回指针
需要返回的类型是某种数据类型的指针。从函数返回指针存在以下问题:
A. 返回未初始化的指针
B. 返回指向无效地址的指针
C. 返回局部变量的指针
D. 返回指针但未释放内存
从函数返回动态分配的内存时,使用完内存后必须释放,否则会导致内存泄漏。函数返回局部数据的指针或局部变量是错误的,因为函数返回后,局部数据所在的栈帧将被弹出程序栈,栈帧上的数据易被后续调用函数的栈帧覆盖。通过将局部变量声明为static类型,可以将其作用域限定在函数内部,但分配在栈外(数据段),从而避免局部数据被其他函数的栈帧覆盖。
1.19MB
文件大小:
评论区