gpt4 book ai didi

c - 在函数返回的指针处打印值

转载 作者:太空宇宙 更新时间:2023-11-04 00:36:38 24 4
gpt4 key购买 nike

我正在尝试通过以下方式从其他文件访问静态变量。你能帮忙打印 file1.c 中变量 'c' 的值吗?

找到下面的代码

文件1.c

void main(void)
{
int m;
m=func_ret();
printf("\n m = %d\n",m);
}

文件2.c

static int c =5;
int *func_ret(void)
{
printf("\n c = [%d]\n",c);
return &c;
}

最佳答案

这里的问题是,您从 func_ret() 返回一个指针,然后尝试在 int 变量中捕获返回值,然后尝试打印使用 %d 的值。它主要调用 undefined behaviour .

供引用,C11,章节 §6.3.2.3

Any pointer type may be converted to an integer type. Except as previously specified, the result is implementation-defined. If the result cannot be represented in the integer type, the behaviour is undefined. The result need not be in the range of values of any integer type.

解决方案:您需要将m 的类型从int 更改为int *。您还必须使用适当的格式说明符。

另请注意,main() 的推荐签名是 int main(void)

关于c - 在函数返回的指针处打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31183981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com