首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不返回的情况下访问在main中的另一个函数中创建的数组?

如何在不返回的情况下访问在main中的另一个函数中创建的数组?
EN

Stack Overflow用户
提问于 2019-03-01 13:48:48
回答 2查看 324关注 0票数 0

在StackOverflow上的第一篇文章。我应该创建一个函数:

代码语言:javascript
复制
int sumsort(int *a, int *b, int *c)

此函数应将a、b和c指向的内存位置中的3个值按升序排列,并返回内存位置a、b和c的内容总和。

下面是我的函数:

代码语言:javascript
复制
 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

如何在main中访问sorted[]数组?我需要按升序打印3个变量,但我并不知道如何做到这一点,因为sumsort函数必须返回sum,并且实际的排序也必须在sumsort函数中进行。

我尝试在main中创建一个新的数组变量,并在调用sumsort函数后将其赋值为sorted[],但是因为它超出了作用域,所以不起作用?

EN

Stack Overflow用户

发布于 2019-03-01 15:56:24

您可以在main外部将sorted[]声明为全局变量:

代码语言:javascript
复制
int sorted[3];
main()
{
  int a=20, b=15, c=22, sum;
 sum= sumsort(&a,&b,&c);
 printf("%d",sum);
 printf("%d", sorted[0]);
 printf("%d", sorted[1]);
 printf("%d", sorted[2]);

 }

在你的函数中,你可以使用它,如下所示:

代码语言:javascript
复制
 int sumsort(int *a, int *b, int *c) {

 int sum = *a + *b + *c;

 sorted[0] = *a; 
 sorted[1] = *b;
 sorted[2] = *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

你可能需要检查你的排序逻辑。

希望这能有所帮助:)

票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54938644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档