有int数据类型数组函数吗?

Posted

技术标签:

【中文标题】有int数据类型数组函数吗?【英文标题】:Is there int data type array function? 【发布时间】:2019-11-20 03:35:13 【问题描述】:

C 中真的有数组函数吗?我实际上想一次返回几个整数值。下面的代码显然无效,但这正是我正在考虑的。有没有其他方法可以做到这一点?

int marks[5] = 90, 90, 70 ,50, 40;
int search = 90;

int linearSearch()
  int result[5];
  int index = 0;

  for(int i = 0; i < 5; i++)
     if(marks[i] == search)
        result[index] = i;
        index++;
     

  
  return result;

【问题讨论】:

没有。将你的数组埋在一个结构中并返回它。无论如何,您都需要一个,这样调用者就可以知道您找到了多少(如果有)结果(即index 也可以是所述结构的成员)。 【参考方案1】:

我们可以将数组包装在一个结构中。

#define MAX_N 32

typedef struct
    int n;
    int result[MAX_N];
 Array;

Array linearSearch()
    Array arr;
    //do something
    return arr;

【讨论】:

【参考方案2】:

您在函数内将result 声明为堆栈内存,并且您正在返回其地址。该地址在函数返回后将无效(为该函数分配的内存被释放)。要么动态声明它并返回它的地址,要么在你的调用函数中声明它并将它的地址作为参数传递给linearSearch(),或者你甚至可以像search一样将它设为全局

【讨论】:

【参考方案3】:

现在我意识到这是一个非常愚蠢的问题,但答案很简短,不。我所做的是我声明了一个全局数组变量,然后我将值传递到数组中。这样我就可以回调数组中的值了。

int marks[5] = 90, 70, 90 ,50, 40;
int search = 90;

//global variable
int result[5];
int count = 0;

void linearSearch()
   for(int i = 0; i < 5; i++)
      if(marks[i] == search)
         result[count] = i;
         index++;
      
   

现在这应该将02 返回到result[0]result[1]。请确保稍后将count 重置为0

【讨论】:

以上是关于有int数据类型数组函数吗?的主要内容,如果未能解决你的问题,请参考以下文章

怎么用一个数组储存两种数据类型,如int char

Mysql中有类似merge into这种函数吗

int、char 也是抽象数据类型吗?

VB 中Byte类型的数据是 变体型(Variant)吗,可以直接赋值int或者赋值string吗

go语言学习笔记 — 基础 — 高级数据类型 — 数据容器 — 数组:向函数传递数组

高级数据类型(arraryslicemapptr)