C语言跨函数使用内存
#include <stdio.h>
#include <malloc.h>
void f (int **q)
{
int i=999;
*q=(int *)malloc(sizeof(int));//*q=&i;
**q=i;//*q=&i不行; 这是为啥不能换
}
int main (void)
{
int *p;
f(&p);
printf("%d\n",*p);
return 0;
}
请问f函数中的**q改成*q=&i;最后输出的*p为什么是垃圾值;
#include <stdio.h>
void f (int **q);
int main (void)
{
int *p;
f(&p);
printf("%d\n",*p);
return 0;
}
void f (int **q)
{
int i=100;
*q=&i;//**q=i; 不行 这是为啥不能换
}*/
请问谁能解释一下这俩个代码的区别啊。 因为 i 是一个局部变量吧,指针会变成野指针 *q=&i 只给了个地址,但是 i 在函数完了之后也没了,地址指向一堆垃圾 i生存期只在调用函数存在
返回就释放了
所以是垃圾值
页:
[1]