A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

int text(int a)
{
   
   
    return &a;
}

//定义一个返回值为int * 的函数

int * text(int a)
{
   
    //int a = 2
    return &a;
}

//使用指针函数
int main()
{
    int b = 2;
    int *p = text(2);
    b = 19;
    printf("%d\n",*p);//打印的是函数内部a的值,此时text函数已经结束,text内部的a已经不能被访问了,注意,我们能通过p找到原来text函数内部的a的地址,但是这个地址对应的空间存储是什么由操作系统决定
    for (int i = 0; i < 10; i++) {
        printf("%d\n",*p);//打印的是函数内部a的值,此时text函数已经结束,text内部的a已经不能被访问了,注意,我们能通过p找到原来text函数内部的a的地址,但是这个地址对应的空间存储是什么由操作系统决定
    }
   
}

3 个回复

正序浏览
吴振伟 来自手机 中级黑马 2016-3-6 08:10:25
板凳
666666666666
回复 使用道具 举报
我测试的是第一次输出2,下面十次全是0。既然不能访问的值,没必要追究数值怎么变化
回复 使用道具 举报
是不是指针p被访问过一次之后指针指向的内存空间就不是原来的值了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马