对C中返回指针时的安全问题感到困惑

标签 c pointers parameter-passing memory-address

我知道C是按值传递的。所以我认为每次调用函数时 a 和 b 的地址可能不同,但我不确定......我是对的吗?

enter image description here

最佳答案

举个例子:

int *x = i(1, 0);

printf("%d\n", *x);

这会调用未定义的行为,因为函数参数具有自动存储持续时间,并在函数返回时被丢弃。

在函数内部,iab 对象是函数的本地对象,它们的生命周期在函数返回时结束。

关于对C中返回指针时的安全问题感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34145203/

相关文章:

c - 我怎样才能有一个新线程 "take over"stdin?

c++ - 写入内存映射文本文件并打印 NULL 直到映射内存末尾

c - 当我将指针设置为 NULL 时我的程序崩溃

c - 释放结构体指针的内存

c - 传递 argv 和 argc 以能够读取任何文件类型的任何文件名

bash - 在 Powershell 中构建和执行命令字符串

.net - 为 .NET 编译 C 代码

c - Scanf 将字符串输入解析为字符数组

c++ - 为什么或在什么情况下,您会在 C++ 中将参数作为引用(或指针)传递给函数?

c# - 在 C# Process.Start 参数中使用单引号