gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:39:18 25 4
gpt4 key购买 nike

  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/

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