c - 全局函数未返回正确的值
问题描述
我正在尝试使用全局函数编译向量的第一个非零值。但是当我编译时,它返回原始值 k1=k2=1,而它应该是 k1=0 和 k2=2。不?我的代码如下所示:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
primeiro(poli1, k1);
printf("%d \n", k1);
primeiro(poli2, k2);
printf("%d \n", k2);
}```
解决方案
您需要使用传递引用(指针)来更改主代码中 k1 的值(它退出的范围)或将 primeiro 的 inovcation 分配给 k1 9k1 = primeiro(poli1, k1);) 这实际上是从中返回值。
修改后的实施:
#include<math.h>
#include<stdlib.h>
int primeiro(float vec[], int f)
{
f=0;
while(vec[f]==0)
{
f++;
}
return f;
}
int main()
{
float poli1[4]={1,2,3,4}, poli2[4]={0,0,5,6};
int k1=1, k2=1, i;
printf(" \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli1[i]);
}
printf("\n \n");
for(i=0; i<4; i++)
{
printf("%g\t", poli2[i]);
}
printf("\n \n");
k1 = primeiro(poli1, k1);
printf("%d \n", k1);
k2 = primeiro(poli2, k2);
printf("%d \n", k2);
推荐阅读
- javascript - 单击下拉菜单时如何防止拖动事件?
- tomcat - Tomcat 设置以在出站 HTTPS 连接上使用 TLS1.2
- reactjs - 在 react-select 2 中显示带有选项的图像
- perl - perl中的标题行错误太多
- aframe - aframe-state-component 可以跨场景跟踪状态吗?
- ios - UITableViewCell 行为奇怪 - 文本变为白色
- http - JMeter - 超过最大执行时间但不停止请求时发送错误消息
- vba - 如何在 VBA 宏中应用 Excel 公式来查找倒数第二个单词
- apache - 大型提交在中途停止
- javascript - for循环在量角器中不起作用