美文网首页
返回值为指针的函数的风险

返回值为指针的函数的风险

作者: 禅绕此心 | 来源:发表于2017-11-20 21:42 被阅读0次

#include <stdio.h>

int* a(int* x);

int main(void){

int oldpay=3000;

int *poldpay=&oldpay;

int *newpay=a(poldpay);

printf("%d,%d",*poldpay,*newpay);//关键行1

}

int* a(int* x){

*x+=1000; //关键行2

return  x;

}

结果如下:

4000,4000。

正是因为指针作为变元的指向地址的不变性导致原来的变量的值发生了变化!

当把关键行2及之后行改为:int pay =*x+1000;

                                                  return &pay;

关键行1改为两个printf分别输出两个数据!

结果更为离谱 3000,12312312

为什么?

因为当a函数结束后作用域内的变量是无效的!!

当然上述情况也有可能显示为3000,4000

这种情况是因为a的内存尚未被重新使用!

相关文章

  • c语言中的注册函数、回调函数(callback)以及多态的实现

    一、函数指针 函数指针:指向存放函数空间首地址的指针变量。 函数指针的定义方式为: 函数返回值类型 (* 指针变量...

  • 返回值为指针的函数的风险

    #include int* a(int* x); int main(void){ int oldpay=3000;...

  • 无标题文章

    1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int *,即返回值是指针类型的。 [cpp] vi...

  • 函数和指针

    函数指针: 指向函数的指针(是指针)指针函数:返回值是指针的函数(是函数)

  • NDK启航篇——C语言基础(函数指针)

    昨天介绍了指针类型、空指针、指针运算,今天来写一下函数指针 函数指针 函数指针的定义:函数的返回值类型(函数指针的...

  • Redis

    1.指针函数与函数指针 指针函数本质是指针,其返回值是指针。如 float *fun(); 函数指针,本质是指针。...

  • C语言指针函数

    1、定义 指针函数是一个返回值为指针的函数 2、声明格式 数据类型 * 函数名称(参数){语句;} 3、代码找茬 ...

  • 函数指针, 指针函数, 数组指针, 指针数组

    函数指针 重点是指针,存储的是地址,存储的函数的入口地址 指针函数 重点是函数,返回值是指针 数组指针 重点是指针...

  • 指针

    1.指针数组-- 数组里都是指针 可以看成返回值为指针的函数 int *p[n] 带小括号的就是数组指针了int ...

  • C++用const修饰函数情形解析

    1.如果给以“指针传递”方式的函数返回值加const修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被...

网友评论

      本文标题:返回值为指针的函数的风险

      本文链接:https://www.haomeiwen.com/subject/ueebvxtx.html