c - 函数返回类型作为指针为什么不作为 int ,同时返回变量的地址

标签 c pointers

我有一个如下所示的函数

int* foo() {
int temp;
return(&temp); //address of temp variable.

编写与

相同的函数有什么问题
int foo() {
    int temp;
    return(&temp); //address of temp variable.
    }

因为“&”运算符返回内存位置的地址,它是一个整数。

最佳答案

编译器不遵循数字逻辑。对于它来说,&temp是一个指针,而temp是一个整数,并且是不同的类型,尽管两者都是下面的数字流。

只有强制转换才能让编译器相信您的逻辑。

类似

return (int)&temp

关于c - 函数返回类型作为指针为什么不作为 int ,同时返回变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10206559/

相关文章:

c++ - 要创建持久变量,是局部静态变量好还是全局变量好?

C# 指向列表<T> (WinForms)

c++ - C++派生类构造函数后调用基类构造函数

c++ - 如何正确处理垃圾收集并避免使用自定义对象指针集合的内存泄漏...?

c - 在 C 中从类型 void * 分配给类型时出现错误不兼容类型

c++ - 使用 GL_TEXTURE_MIN_FILTER GL_LINEAR 渲染效果不佳

c - 如何从 C 中的函数返回字符数组?

c - 结构成员不通过指向结构的指针更新

c - While 循环的输出

c - 无论如何在没有 pthread.h 的情况下在 C 中使用线程?