【发布时间】:2017-03-31 03:10:02
【问题描述】:
我正在尝试计算大于数组右侧元素的元素数。我的功能就到这里了。
int* SurpassersKing(int input1_size, int* input1,int* output_size)
{
int i,k;
int count[input1_size];
for (i = 0; i < input1_size; i++)
count[i] = 0;
for ( i = 0; i < input1_size; i++)
{
for ( k = i + 1; k <input1_size; k++)
{
if (input1[i] < input1[k]) {
count[i]++;
}
}
}
return count;
}
这是我计算数组中更大元素的函数。
因此,在下面的代码 sn-p 中,我编写了 main 函数,声明了所有可验证的变量,如 output_size、计数数组、i、k 作为数组的索引并打印内容,并调用计数函数。
int main() {
int output_size;
int* output;
int ip1_size = 0;
int ip1_i;
scanf("%d\n", &ip1_size);
int ip1[ip1_size];
for(ip1_i = 0; ip1_i < ip1_size; ip1_i++) {
int ip1_item;
scanf("%d", &ip1_item);
ip1[ip1_i] = ip1_item;
}
output = SurpassersKing(ip1_size,ip1,&output_size);
int output_i;
for(output_i=0; output_i < output_size; output_i++) {
printf("%d\n", output[output_i]);
}
return 0;
}
但我没有得到所需的输出,所以我可以做些什么来改进它。
【问题讨论】:
-
请将所有代码作为格式化文本放入问题中。不是作为外部链接,当然也不是作为图像。
-
这是我附加的图片
-
不是作为图片
-
return count;。那是错误的。不能从函数返回指向局部变量的指针。函数退出后无效。 -
两个常用选项: 1. 返回动态分配的内存。 2. 调用者传入函数用于输出结果的缓冲区。