技术问询:这段C语言代码是否存在未定义行为?
这段代码不存在未定义行为
这段代码里并没有出现读取未初始化变量的操作,因此不存在未定义行为:
- 我们只是获取了未初始化变量
val的地址并传递给函数foo,随后通过指针完成对val的赋值。 - 自动变量的地址是合法有效的,通过指针对其进行写入操作完全符合C语言标准,不属于未定义行为范畴。
对应的代码如下:
#include <stdio.h> void foo(int *a) { *a = 1; } int main() { int val; foo(&val); return 0; }
内容的提问来源于stack exchange,提问作者bekici
相关产品推荐
相关产品推荐

