c++指针类型的函数

  下面随笔将讲述c++指针类型的函数。

  原创链接:https://www.cnblogs.com/iFrank/p/14444379.html

指针类型的函数

  若函数的返回值是指针,该函数就是指针类型的函数。

   指针函数的定义形式

  存储类型  数据类型  *函数名() 
  { //函数体语句
  }

批注 2020-03-04 221235.png

 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  

 

 

posted @ 2021-02-24 23:11  `Konoha  阅读(400)  评论(0编辑  收藏  举报