【发布时间】:2019-08-16 16:20:09
【问题描述】:
void func(char *p)
{
int q = 13;
p = &q;
printf("%d\n", *p);
}
void main(void)
{
int var = 20;
int *p = &var;
printf("%d\n", *p);
func(p);
printf("%d\n", *p);
}
怎么在函数退出时指针还是20?
当func() 结束时,我正在跳跃,其中修改了指针,在最后一个printf() 中,*p 值将指向堆栈中的一些随机内容。
【问题讨论】:
-
func 是无效的并且没有返回任何值。在 main 中的函数调用之后,每个值都是相同的。
-
顺便说一句,您的问题标题与问题不匹配
-
你好 Jabberwocky。下次我会努力注意的。写标题的时候没想到。感谢您的观察:)
-
您将一个 int 指针传递给一个接受 char 指针的函数。请打开你的编译器警告!
-
详细信息:
*p是 20。“指针的值”不是 20,而是类似于“0x1234000”`。
标签: c pointers call-by-value