#include <stdio.h>
void getpoint(int **p)
{
int b = 4321;
*p = &b;
}
int main()
{
int a = 1234;
int *p = &a;
printf("%d\n",*p);
getpoint(&p);
printf("%d\n",*p);
}
getpoint函数中获取b变量的地址是否有问题?
#include <stdio.h>
void getpoint(int **p)
{
int b = 4321;
*p = &b;
}
int main()
{
int a = 1234;
int *p = &a;
printf("%d\n",*p);
getpoint(&p);
printf("%d\n",*p);
}
getpoint函数中获取b变量的地址是否有问题?
阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
你想通过二级指针获取临时变量的地址,但是在 C 语言中,临时变量的地址是无法获取的,因为临时变量在栈帧中分配内存,栈帧在函数调用结束后会被销毁,临时变量的地址也就失效了。
你可以通过以下方法来实现:
#include <stdio.h>
void getpoint(int **p)
{
int b = 4321;
*p = malloc(sizeof(int));
**p = b;
}
int main()
{
int *p;
getpoint(&p);
printf("%d\n", *p);
free(p);
return 0;
}
在上面的代码中,我们通过 malloc 分配内存来创建一个临时变量的地址,然后将临时变量的值赋给该地址。这样我们就可以通过 p 来访问临时变量的值了。