当我们想要返回一种特定类型的数据时,我们需要先声明一个全局变量,对吗?并将此变量分配给函数返回的值?
同样对于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/