静态函数跨函数使用:
这个函数有程序有问题,f()函数使用的是静态函数int i,当此函数调用完之后会被系统自动释放,但是12行的printf()却依然能够将i的值输出,这是一种不安全的现象,所以有问题
这个函数有程序有问题,f()函数使用的是静态函数int i,当此函数调用完之后会被系统自动释放,但是12行的printf()却依然能够将i的值输出,这是一种不安全的现象,所以有问题
#include <stdio.h>
void f(int ** q)
{
int i = 5;
*q = &i;
}
int main()
{
int * p;
f(&p);
printf("%d \n", *p);//12行这个printf有问题
return 0;
}
void f(int ** q)
{
int i = 5;
*q = &i;
}
int main()
{
int * p;
f(&p);
printf("%d \n", *p);//12行这个printf有问题
return 0;
}
动态函数跨函数使用:
(这个程序就没问题了)
#include <stdio.h>
#include <malloc.h>
void f(int ** q)
{
//*q = p
*q = (int *)malloc(sizeof(int));
**q = 5;//**q = *p 相当于int i的i
}
int main()
{
int * p;
f(&p);
printf("%d \n", *p);
return 0;
}