c - 使用指针保存从c中函数返回的数据

标签 c pointers variable-assignment

  1. 当我们想要返回一种特定类型的数据时,我们需要先声明一个全局变量,对吗?并将此变量分配给函数返回的值?

  2. 同样对于int原始数据类型,我们不能使用malloc来保留内存块吗?

真诚的, 满脑子疑惑。

#include <math.h> 
#include <stdio.h> 

int *sum(); 
int main() 
{ 
    int *num; 
    num = sum(); 
    printf("\nSum of two given values = %d", *num); 
    return 0; 
} 

int *sum() 
{ 
    int a = 50, b = 80;
    int *sum = NULL; 
    printf("%d %d",a,b);
    *sum = a+b; 
    return sum; 
} 

我想使用指针来保存函数返回的数据。是否可以?我知道链表结构是可能的。但我不确定整数和其他原始数据类型。

最佳答案

从第二个问题开始,您可以使用 malloc 为任何类型的变量分配任何大小的内存。是的,您可以使用 malloc 在堆上分配 int 和其他基本类型。

int i_am_a_stack_variable = 1;
int * i_am_a_pointer_to_heap_memory = malloc(sizeof(int));

对于你的第一个问题,我认为你误解了返回变量的工作原理。通常,应避免使用全局变量。当然不需要它们从函数返回值。函数的返回值从函数的堆栈帧复制回调用堆栈帧(无论它被分配到何处)。请注意,它已被复制回来。无论它是原始类型还是指针(实际上只是另一种原始类型)。您的代码可以根本不使用指针来编写。另请注意,即使您提到了全局变量,您的代码也根本没有使用全局变量。

#include <math.h> 
#include <stdio.h> 

int sum(); 
int main() 
{ 
    int num; 
    num = sum(); 
    printf("\nSum of two given values = %d", num); 
    return 0; 
} 

int sum() 
{ 
    int a = 50, b = 80;
    int sum = 0; 
    printf("%d %d",a,b);
    sum = a+b; 
    return sum; 
} 

这有意义吗?

关于c - 使用指针保存从c中函数返回的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138748/

相关文章:

c - 颠倒词序的错误

c - 多线程 - 光线追踪器

c++ - 确保套装新颖性的有效方法

bash - bash 何时以及如何确定输入行是否为赋值?

c - Typedef 函数指针,用于返回指向其自身类型函数的指针的函数?

Java:替代 LinkedList 或 int 指针数据结构

c - 指向结构体和类型转换的指针

c - 在 C 程序中使用 arg[v] 命令行参数

c++ - 在 C++ 中将指针值赋给变量的副作用

lisp - 将表达式的结果分配给变量