【发布时间】:2021-10-22 21:26:45
【问题描述】:
我正在尝试使用全局函数编译向量的第一个非零值。但是当我编译时,它返回原始值 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);
}```
【问题讨论】:
-
您没有存储对
primeiro的调用的返回值,那么您希望它如何更改任何变量?另外,请记住,C 函数 args 是 按值传递的 - 函数 args 是函数的本地变量,在函数内部更改它对调用者的变量值没有影响。 -
也许你想要
k1 = primeiro(poli1, k1);?或者将第二个 arg 作为指针传入,以便它可以取消引用并修改原始变量值。 -
ooo 我想我明白了,谢谢。
标签: c function global-variables