如何将数组从指针传输到C上的主程序
Posted
技术标签:
【中文标题】如何将数组从指针传输到C上的主程序【英文标题】:How to transfer an array from a pointer to the main program on C 【发布时间】:2022-01-09 03:26:15 【问题描述】:这是我一直在尝试运行的程序...
#include <stdio.h>
#define MAX 10
int suma_arreglo(int x1[], int x2[], int y);
int array1[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, array2[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
int *suma;
main()
int cont = 0;
suma = suma_arreglo(array1, array2, MAX);
for(cont = 0; cont < MAX; cont++)
printf("\n%d + %d = %d", array1[cont], array2[cont], *suma++);
puts("");
system("pause");
int suma_arreglo(int x1[], int x2[], int y)
int cont, arraysum[y];
for(cont = 0; cont < y; cont++)
arraysum[cont] = x1[cont] + x2[cont];
//printf("\n%d + %d = %d", x1[cont], x2[cont], arraysum[cont]);
return arraysum;
但是由于某种原因,它不起作用,调试我注意到函数和程序工作正常,但是当我尝试将地址arraysum返回到主程序suma中的指针时问题就开始了......理论上应该是
suma = arraysum
这样它就可以在主程序上运行。无论如何,我认为我尝试将数组的数据取回主程序的方式仍然存在问题。
你们觉得呢?
【问题讨论】:
两个问题:首先suma_arreglo
被声明为int
值,而不是指向int
的指针(即int *
)。其次,您尝试返回指向 local 数组 arraysum
的第一个元素的指针。一旦函数返回arraysum
的生命周期结束并且指向它或其元素的任何指针都将变为无效。将指向现有数组的指针作为参数传递,
【参考方案1】:
这行得通:
#include <stdio.h>
#define MAX 10
int* suma_arreglo(int x1[], int x2[], int y, int* sum_arr_ptr);
int array1[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, array2[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
int *suma;
int sum_array1[MAX];
main()
int cont = 0;
suma = suma_arreglo(array1, array2, MAX, sum_array1);
for(cont = 0; cont < MAX; cont++)
printf("\n%d + %d = %d", array1[cont], array2[cont], *suma++);
puts("");
system("pause");
int* suma_arreglo(int x1[], int x2[], int y, int* sum_arr_ptr)
for(int cont = 0; cont < y; cont++)
sum_arr_ptr[cont] = x1[cont] + x2[cont];
//printf("\n%d + %d = %d", x1[cont], x2[cont], arraysum[cont]);
return sum_arr_ptr;
问题在于,首先,你给函数一个返回类型int
,然后让它返回一个int*
。其次,它返回了自己的局部变量。在函数体内本地创建的变量在函数完成后会消失,因此您无法返回这些变量。
这里我只是给函数引入了第四个参数,一个指向整数数组的int*
指针,这样它就可以在最后返回正确的结果,而不是返回函数返回后不存在的东西.还将返回类型从int
固定为int*
。
PS。在函数内部创建变量时,您可以使用 static
关键字将其生命周期延长到函数体本身之外。在这种情况下,该变量只被初始化一次并一直存在到程序结束。
【讨论】:
男人!太感谢了!您对返回类型所说的很有意义,我只是没有考虑过。我刚开始学习编程,我觉得自己真的被那个程序困住了。我需要更多地研究关于第四个参数的东西,甚至可以尝试一下。无论如何,你的程序运行,谢谢。现在我知道如何从函数中返回指针值了;) 不客气,兄弟 :) 如果您需要更多帮助,可以在 Discord 上加我:KevinDaGrim#9485以上是关于如何将数组从指针传输到C上的主程序的主要内容,如果未能解决你的问题,请参考以下文章
将视频从 Raspberry Pi 流式传输到 Android 应用程序
如何将数据从 Java 桌面/Swing 应用程序发送/传输到 Java Web 应用程序 [重复]
ZZNUOJ_用C语言编写程序实现1159:逆序输出数组元素(指针专题)(附完整源码)