|
|
发表于 2019-10-27 13:18:19
|
显示全部楼层
本楼为最佳答案
用代码说话
- #include <stdio.h>
- int *get_value(void)
- {
- int a = 1234;
- int *p = &a;
- return p;
- }
- void print_value(int *a)
- {
- printf("%d", *a);
- }
- int main()
- {
- printf("%d", *get_value());
- //print_value(get_value());
- return 0;
- }
- // 1234请按任意键继续. . .
复制代码
因为这个指针指向的值还没有覆盖就立刻使用这个值,所以看起来正常
- #include <stdio.h>
- int *get_value(void)
- {
- int a = 1234;
- int *p = &a;
- return p;
- }
- void print_value(int *a)
- {
- printf("%d", *a);
- }
- int main()
- {
- //printf("%d", *get_value());
- print_value(get_value());
- return 0;
- }
- // -858993460请按任意键继续. . .
复制代码
因为在使用这个指针指向的值之前进行了函数调用,函数调用要使用堆栈,这就导致这个值被覆盖了 |
|