注册 登录
编程论坛 C语言论坛

关于指针的一个小问题

li凡 发布于 2020-05-01 14:30, 1826 次点击
# include <stdio.h>
void f(int **q)
{
int i=5;
*q=&i;
}
int main(void)
{
int *p;  
f(&p);
printf("*p=%d\n",*p);
return 0;
}
//在本函数中,运行f();函数以后i不是已经释放掉了吗?为什么运行后还能输出*p=5?
3 回复
#2
qq28901900442020-05-01 15:37
原来的数据不会被清0,你读到的是之前留下来的数据

[此贴子已经被作者于2020-5-1 17:15编辑过]

#3
forever742020-05-01 17:24
下课了老师还留下一黑板字儿呢。
#4
吕孟伟2020-05-02 09:22
回复 3楼 forever74
老哥总是这么形象呀!
#5
自由而无用2021-08-10 14:42
eg:
line 9 &p = 0x12ff9c; p = 0xcccccccc;
line 2 &q = 0x12ff94; q = &p = 0x12ff9c;
line 4 &i = 0x12ff90;
line 5 *q = p = &i = 0x12ff90;
line 11 *p = i = 5;
---------------------------------------------
# include <stdio.h>

void f(int **q)
{
    int i=5;
   
    *q=&i;
}

void rw_stack(void)
{
    int a[] = {10,11,12,13,14,18};
}

int main(void)
{
    int *p = (int *)&main;
   
    printf("*p=%x\n",*p);
   
    f(&p);
   
    printf("*p=%d\n",*p);
   
    rw_stack();
   
    printf("*p=%d\n",*p);
   
    return 0;
}
1