黑马程序员技术交流社区

标题: 这个程序打印第一个*p和第二个*p值为啥不一样啊 [打印本页]

作者: zpj19921115    时间: 2016-3-5 21:41
标题: 这个程序打印第一个*p和第二个*p值为啥不一样啊
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的地址,但是这个地址对应的空间存储是什么由操作系统决定
    }
   
}
作者: zpj19921115    时间: 2016-3-5 21:42
是不是指针p被访问过一次之后指针指向的内存空间就不是原来的值了
作者: raink001    时间: 2016-3-6 00:03
我测试的是第一次输出2,下面十次全是0。既然不能访问的值,没必要追究数值怎么变化
作者: 吴振伟    时间: 2016-3-6 08:10
666666666666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2