有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++;
现在这应该将0
和2
返回到result[0]
和result[1]
。请确保稍后将count
重置为0
。
【讨论】:
以上是关于有int数据类型数组函数吗?的主要内容,如果未能解决你的问题,请参考以下文章
VB 中Byte类型的数据是 变体型(Variant)吗,可以直接赋值int或者赋值string吗