指针类型的函数
若函数的返回值是指针,该函数就是指针类型的函数。
指针函数的定义形式
- 存储类型 数据类型 *函数名()
- { //函数体语句
- }

- 1 错误的例子
- 2
- 3 int main(){
- 4 int* function();
- 5 int* ptr= function();
- 6 *prt=5; //危险的访问!
- 7 return 0;
- 8 }
- 9 int* function(){
- 10 int local=0; //非静态局部变量作用域和寿命都仅限于本函数体内
- 11 return &local;
- 12 }//函数运行结束时,变量local被释
- 1 正确的例子1
- 2
- 3 #include
- 4 using namespace std;
- 5 int main(){
- 6 int array[10]; //主函数中定义的数组
- 7 int* search(int* a, int num);
- 8 for(int i=0; i<10; i++)
- 9 cin>>array[i];
- 10 int* zeroptr= search(array, 10); //将主函数中数组的首地址传给子函数
- 11 return 0;
- 12 }
- 13 int* search(int* a, int num){ //指针a指向主函数中定义的数组
- 14 for(int i=0; i<num; i++)
- 15 if(a[i]==0)
- 16 return &a[i]; //返回的地址指向的元素是在主函数中定义的
- 17 }//函数运行结束时,a[i]的地址仍有
- 1 正确的例子2
- 2
- 3 #includeusing namespace std;
- 4 int main(){
- 5 int* newintvar();
- 6 int* intptr= newintvar();
- 7 *intptr=5; //访问的是合法有效的地址
- 8 delete intptr; //如果忘记在这里释放,会造成内存泄漏
- 9 return 0;
- 10 }
- 11 int* newintvar (){
- 12 int* p=new int();
- 13 return p; //返回的地址指向的是动态分配的空间
- 14 }//函数运行结束时,p中的地址仍有效
- 15