c - 函数可以返回值,但不能返回没有指针变量的地址

标签 c

为什么我们可以从函数返回局部变量的值而不是它的地址?比如我们在C语言中可以写'return a'但不能写'return &a'。

最佳答案

评论中示例的修改版本:

#include <stdio.h>

int* f() {
   int a = 6, *p;
   p = &a;
   return p;
}  

int g() {
    int a = 6;
    return a;
}

int main() {
   int x = g();

   int* y = f();
}

fg 均按值返回。

One 返回一个 int 并将值存储在 x 中。现在,x 保存了之前在 a 中的值 6

另一个函数返回一个指针并将指针值存储在y中。现在,y 保存了之前存储在 p 中的值。

问题只是指针现在无效(悬空),因为 p 指向的东西不再存在。

关于c - 函数可以返回值,但不能返回没有指针变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46751949/

相关文章:

c++ - 操作数类型不兼容 ("char"和 "const char*")

c - 如何构建Catboost C评估库API?

c++ - 为三重指针分配内存

c++ - 使用 CMake 将 open62541 库构建为外部库

c - 如何在C中中断覆盖文件时避免丢失数据

c - 使用c中的文件操作写入文本文件时获取空格

c - 如何从文本文件中读取单词并添加到字符串数组中?

c - 如何在 C 中使用 GSL 库对 Hermitian 矩阵进行对角化?

c - 如何知道寄存器变量存储在哪里?

c - 如果进程的 needpoll 变量已经使用 process_poll(&process) 设置,Contiki 内核何时轮询进程