c - 如何访问在 main 的另一个函数中创建的数组而不返回它?
问题描述
StackOverflow 上的第一篇文章。我应该创建一个函数:
int sumsort(int *a, int *b, int *c)
此函数应按升序排列 a、b 和 c 指向的内存位置中的 3 个值,并返回内存位置 a、b 和 c 的内容之和。
这是我的功能:
int sumsort(int *a, int *b, int *c) {
int sum = *a + *b + *c;
int sorted[] = {*a, *b, *c};
for (int i = 0; i <= 2; i++) {
if (sorted[0] > sorted[1])
{
int temp = sorted[1];
sorted[1] = sorted[0];
sorted[0] = temp;
} // end if
if (sorted[1] > sorted[2])
{
int temp2 = sorted[2];
sorted[2] = sorted[1];
sorted[1] = temp2;
} // end if
} // end for
return sum;
} // end sumsort function
如何访问sorted[]
main 中的数组?我需要按升序打印 3 个变量,但我真的不知道我该怎么做,因为sumsort
函数必须返回总和并且实际排序也必须在sumsort
函数中进行。
我尝试在 main 中创建一个新的数组变量并sorted[]
在调用该sumsort
函数后对其进行分配,但这不起作用,因为它超出了范围?
解决方案
您是正确的,您无法sorted
从main
. 但你不需要。该函数的要点在于它修改了其参数所指向的值。
例如:
int main()
{
int x = 5, y = 1, z = 3;
int sum = sumsort(&x, &y, &y);
// now x == 1 , y == 3 , z == 5
}
这个有可能。在里面sumsort
你不需要创建一个新数组,而是修改它的参数指向的值。
例如,如果你只需要对两个数字进行排序,这就是你要做的
void foo(int* a, int *b)
{
if (*a > *b)
{
int temp = *a;
*a = *b;
*b = temp;
}
}
推荐阅读
- github - 如果测试失败,如何自动拒绝拉取请求(Github 操作)
- c# - 具有自定义文件名的 Log4net 滚动文件
- amazon-web-services - 如何在调用并行 Lambda 函数的 AWS Step Function 上禁用(或重定向)日志记录
- javascript - 如何在 JQuery 中禁用从一个列表框到另一个列表框的选定选项?
- python - 根据条件使用pandas读取多个excel文件,但如果第一个excel不满足条件,pandas会停止读取它们
- c# - 我们可以在 C# 中使用点命令(SQlite 的特殊命令)吗
- sql - 相同的 SQL 查询无法在 SQL Server 中运行,但在 Azure SQL 转换中运行良好
- java - 为什么 Nashorn 添加两个整数会产生双倍?
- google-colaboratory - 如何使用 google colab 在 MyFolder 中运行文件“train.py”?
- elasticsearch - 如何为 Filebeat Nginx 模块指定管道?