C++中的指针函数(指针作为函数返回值)
函数的返回值也可以是指针,这样的函数称为指针函数。其定义形式如下:
【实例】指针做返回值。定义一个指针函数,在函数结束时返回指针值,具体代码如下:
注意,值为 NULL 的指针地址为 0,但并不意味着这块内存可以使用。将指针赋值为 NULL 是基于安全考虑。
类型名 *函数名(参数表列);函数返回的是一个地址。需要注意的是,指针的内容并不随返回地址一样经过复制成为临时变量。如果操作不当,后果将难以预料。
【实例】指针做返回值。定义一个指针函数,在函数结束时返回指针值,具体代码如下:
#include <iostream> using std::cout; using std::endl; int *pointerGet(int *p) // 定义指针函数 pointerGet(),返回值为指针 { int i = 9; // 定义 i,注意 i 为局部变量,只在函数体内有效 cout << "函数体中 i 的地址" << &i << endl; cout << "函数体中 i 的值:" << i << endl; p = &i; // 指针 p 指向 i 的地址 return p; // 返回指针 p,即 i 的地址 } int main() { int *k = NULL; // 定义指针 k,赋值为 NULL cout << "k 的地址:" << k << endl; // 输出 k 的初始地址 cout << "执行函数,将 k 赋予函数返回值" << endl; k = pointerGet(k); // 调用 pointerGet() 函数,返回值赋给 k cout << "k 的地址:" << k << endl; // 输出 k 的新地址(i 的地址) cout << "k 所指向内存的内容:" << *k << endl; // 临时变量 i 被销毁,内存不可预知,k 接收到是一个随机数 }运行结果为:
k 的地址:0
执行函数,将 k 赋予函数返回值
函数体中 i 的地址0x6ffdbc
函数体中 i 的值:9
k 的地址:0x6ffdbc
k 所指向内存的内容:0
注意,值为 NULL 的指针地址为 0,但并不意味着这块内存可以使用。将指针赋值为 NULL 是基于安全考虑。