C函数解释
例如,为什么我们只把C函数解释,c,C,例如,为什么我们只把a放进去,而不把a[]放进去 如何从一个函数返回两个值,例如d和dx。当涉及数组时,仅传递数组的名称,接受数组的函数将指向相同的内存地址。它更像C++中的引用变量。 一次不能返回多个值。如果数据类型相似,则u可以复制到数组并将数组传回当涉及到数组时,仅传递名称,传递数组的地址,接受它的函数将指向相同的内存地址。它更像C++中的引用变量。 一次不能返回多个值。如果数据类型类似,则当您将数组传递给函数orizousa时,u可以复制到数组并将数组传递回,您传递的是数组的地址,而不是
a
放进去,而不把a[]
放进去
如何从一个函数返回两个值,例如
d
和dx
。当涉及数组时,仅传递数组的名称,接受数组的函数将指向相同的内存地址。它更像C++中的引用变量。
一次不能返回多个值。如果数据类型相似,则u可以复制到数组并将数组传回当涉及到数组时,仅传递名称,传递数组的地址,接受它的函数将指向相同的内存地址。它更像C++中的引用变量。
一次不能返回多个值。如果数据类型类似,则当您将数组传递给函数
orizousa
时,u可以复制到数组并将数组传递回,您传递的是数组的地址,而不是实际副本(至少在这种情况下)。在C中,a
实际存储数组第一个元素的地址。因此,您正在传递数组的第一个元素的地址<代码>*a将打印第一个元素的值。我们无法传递a[]
,因为这是一个语法错误
要返回2个值,可以在main函数中声明一个变量,并将其作为参考变量传递给
orizousa
。然后您可以返回d
并将dx1的值存储在参考变量中。当您将数组传递给函数orizousa
时,您传递的是数组的地址,而不是实际副本(至少在这种情况下)。在C中,a
实际存储数组第一个元素的地址。因此,您正在传递数组的第一个元素的地址<代码>*a将打印第一个元素的值。我们无法传递a[]
,因为这是一个语法错误
要返回2个值,可以在main函数中声明一个变量,并将其作为参考变量传递给orizousa
。然后可以返回d
,并将dx1的值存储在参考变量中
浮球g=猎户座(a)
INTA[]
a是整数类型的数组,其中变量名“a”表示数组a的引用
函数orizousa采用整数类型的引用参数。这就是为什么你必须通过a而不是a[]
如果要返回d和dx,只需向函数添加另一个引用即可
float g = orizousa(a);
浮球g=猎户座(a)
INTA[]
a是整数类型的数组,其中变量名“a”表示数组a的引用
函数orizousa采用整数类型的引用参数。这就是为什么你必须通过a而不是a[]
如果要返回d和dx,只需向函数添加另一个引用即可
float g = orizousa(a);
为什么我们只把“a”放进去,而不把[]放进去 当将数组作为参数传递给C中的函数时,我们必须只传递变量名,除非您只想传递数组的一个元素,在这种情况下,例如float g=orizousa(a[2])。但是orizousa函数接收一个数组,因此必须传递整个数组 如何返回2个值?? 在C中,无法从函数返回2个值。但您可以做的是将变量作为引用传递。您可以这样做:
orizousa(int a[],float pReturn[])
{
....
pReturn[0]=d;
pReturn[1]=dx;
}
#包括
浮动猎户座(国际编号[]);
int main()
{
INTA[12];
int i;
printf(“从图形到apotelesma到apotelesma是一个完整的图形(我的简历:1os-2os-3os sintelestis-apotelesma):”;`在这里输入代码`
例如,(i=0;i为什么我们只把“a”放进去,而不把[]放进去??
当将数组作为参数传递给C中的函数时,我们必须只传递变量名,除非您只想传递数组的一个元素,例如,在这种情况下将是float g=orizousa(a[2])。但是函数orizousa接收一个数组,所以您必须传递整个数组
如何返回2个值??
在C中,无法从函数返回2个值。但您可以做的是将变量作为引用传递。您可以执行以下操作:
orizousa(int a[],float pReturn[])
{
....
pReturn[0]=d;
pReturn[1]=dx;
}
#包括
浮动猎户座(国际编号[]);
int main()
{
INTA[12];
int i;
printf(“从图形到apotelesma到apotelesma是一个完整的图形(我的简历:1os-2os-3os sintelestis-apotelesma):”;`在这里输入代码`
对于(i=0;i数组和指针是密切相关的。当您写入“g=orizousa(a)”时,您正在向函数传递数组a的第一个元素的地址副本
要从函数返回两个值,可以传递要更改的两个变量的地址,也可以将它们放入结构并返回结构
#include <stdio.h>
float orizousa(int n[]);
int main()
{
int a[12];
int i;
printf("grapse tous sintelestes kai to apotelesma tis prwtis eksiswsis \n (me seira:1os-2os-3os sintelestis - apotelesma) :");`enter code here`
for(i=0;i<=11;i++)
{ scanf(" %d",&a[i]);}
float d, dx1, dx2, dx3;
float g=orizousa(a, &d, &dx1, &dx2, &dx3);
printf(" %f",g);
return 0;
}
float orizousa(int a[], float *d, float *dx1, float *dx2, float *dx3)
{
*d=a[0]*a[4]*a[8] + a[1]*a[5]*a[6] + a[2]*a[3]*a[7] - a[2]*a[4]*a[7] - a[1]*a[3]*a[8] - a[0]*a[5]*a[7] ;
*dx1=a[9]*a[4]*a[8] + a[1]*a[5]*a[11] + a[2]*a[10]*a[7] - a[2]*a[4]*a[7] - a[1]*a[10]*a[8] - a[9]*a[5]*a[7] ;
*dx2=a[0]*a[10]*a[8] + a[0]*a[5]*a[6] + a[2]*a[3]*a[11] - a[2]*a[10]*a[11] - a[1]*a[3]*a[8] - a[0]*a[5]*a[11] ;
*dx3=a[0]*a[4]*a[11] + a[1]*a[10]*a[6] + a[9]*a[3]*a[7] - a[9]*a[4]*a[7] - a[1]*a[3]*a[11] - a[0]*a[10]*a[7] ;
}
称为
void foo( int* x, int* y ) {
*x = 1; *y = 2;
}
或者作为一个结构
int xx = 0;
int yy = 0;
foo(&xx,&yy);
要么作为参数传入
typedef struct {
int x;
int y;
} args;
称为
void foo(args* arg) {
args.x=1;
args.y=2;
}
args foo() {
args arg = { 1,2 };
return arg;
}
或返回
args arg;
foo(&arg);
称为
void foo(args* arg) {
args.x=1;
args.y=2;
}
args foo() {
args arg = { 1,2 };
return arg;
}
数组和指针是密切相关的。当您编写“g=orizousa(a)”时,您正在向函数传递数组a的第一个元素的地址副本
要从函数返回两个值,可以传递要更改的两个变量的地址,也可以将它们放入结构并返回结构
#include <stdio.h>
float orizousa(int n[]);
int main()
{
int a[12];
int i;
printf("grapse tous sintelestes kai to apotelesma tis prwtis eksiswsis \n (me seira:1os-2os-3os sintelestis - apotelesma) :");`enter code here`
for(i=0;i<=11;i++)
{ scanf(" %d",&a[i]);}
float d, dx1, dx2, dx3;
float g=orizousa(a, &d, &dx1, &dx2, &dx3);
printf(" %f",g);
return 0;
}
float orizousa(int a[], float *d, float *dx1, float *dx2, float *dx3)
{
*d=a[0]*a[4]*a[8] + a[1]*a[5]*a[6] + a[2]*a[3]*a[7] - a[2]*a[4]*a[7] - a[1]*a[3]*a[8] - a[0]*a[5]*a[7] ;
*dx1=a[9]*a[4]*a[8] + a[1]*a[5]*a[11] + a[2]*a[10]*a[7] - a[2]*a[4]*a[7] - a[1]*a[10]*a[8] - a[9]*a[5]*a[7] ;
*dx2=a[0]*a[10]*a[8] + a[0]*a[5]*a[6] + a[2]*a[3]*a[11] - a[2]*a[10]*a[11] - a[1]*a[3]*a[8] - a[0]*a[5]*a[11] ;
*dx3=a[0]*a[4]*a[11] + a[1]*a[10]*a[6] + a[9]*a[3]*a[7] - a[9]*a[4]*a[7] - a[1]*a[3]*a[11] - a[0]*a[10]*a[7] ;
}
称为
void foo( int* x, int* y ) {
*x = 1; *y = 2;
}
或者作为一个结构
int xx = 0;
int yy = 0;
foo(&xx,&yy);
要么作为参数传入
typedef struct {
int x;
int y;
} args;
称为
void foo(args* arg) {
args.x=1;
args.y=2;
}
args foo() {
args arg = { 1,2 };
return arg;
}
或返回
args arg;
foo(&arg);
称为
void foo(args* arg) {
args.x=1;
args.y=2;
}
args foo() {
args arg = { 1,2 };
return arg;
}
阅读我的答案。它解释了在C中幕后发生的事情。应该澄清你的疑问。如果通过地址传递,你可以返回一个结构,或者修改输入参数,但是小心使用它,因为它涉及指针。阅读我的答案。它解释了在C中幕后发生的事情。应该澄清你的疑问。你可以返回一个结构,或者修改如果通过地址传递,则输入参数,但要小心使用,因为它涉及指针。我只是告诉他方法。没有编写完整的代码。再次,如果要返回两个浮点类型的值,如何可以