Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将数组/指针作为输入参数传递_C_Arrays_Pointers - Fatal编程技术网

C 将数组/指针作为输入参数传递

C 将数组/指针作为输入参数传递,c,arrays,pointers,C,Arrays,Pointers,作为输入参数的数组/指针有问题 我想使用: int A(int ncontours, int cntr[], double* vertices[], int *triangles [3]) { ... B(n, nmonpoly, triangles); ... } A在h文件中定义为: extern int A(int, int *, double (*)[2], int (*)[3]); B定义为 extern int B(int, int, int (*)[3]) 错误消息是: 错误

作为输入参数的数组/指针有问题

我想使用:

int A(int ncontours, int cntr[], double* vertices[], int *triangles [3])
{
...
B(n, nmonpoly, triangles);
...
}
A在h文件中定义为:

extern int A(int, int *, double (*)[2], int (*)[3]);
B定义为

extern int B(int, int, int (*)[3])
错误消息是:

错误1错误C2664:“B”:无法将参数3从“int[]”转换 到“int()[3]”

我想更正A的输入参数,使其与B的调用相匹配

我想问题是它是指向数组的指针

如何做到这一点

谢谢

int (*)[3]
意思是:给我一个指向3个整数数组的指针

int *triangles [3]
意思是:我收到一个指向整数的3个指针数组

这是两件完全不同的事情。这些表达式中符号的优先级很重要,这就是()括号出现的原因

似乎A的定义也是错误的,这是一个完全不同的函数,因为我在上面发布的不同。如果修改了A的定义,则可能能够将三角形参数毫无问题地传递给B,因为它们的类型将匹配

意思是:给我一个指向3个整数数组的指针

int *triangles [3]
意思是:我收到一个指向整数的3个指针数组

这是两件完全不同的事情。这些表达式中符号的优先级很重要,这就是()括号出现的原因

似乎A的定义也是错误的,这是一个完全不同的函数,因为我在上面发布的不同。如果修改了A的定义,则可能能够将三角形参数毫无问题地传递给B,因为它们的类型将匹配

意思是:给我一个指向3个整数数组的指针

int *triangles [3]
意思是:我收到一个指向整数的3个指针数组

这是两件完全不同的事情。这些表达式中符号的优先级很重要,这就是()括号出现的原因

似乎A的定义也是错误的,这是一个完全不同的函数,因为我在上面发布的不同。如果修改了A的定义,则可能能够将三角形参数毫无问题地传递给B,因为它们的类型将匹配

意思是:给我一个指向3个整数数组的指针

int *triangles [3]
意思是:我收到一个指向整数的3个指针数组

这是两件完全不同的事情。这些表达式中符号的优先级很重要,这就是()括号出现的原因


似乎A的定义也是错误的,这是一个完全不同的函数,因为我在上面发布的不同。如果您修改了A的定义,您很可能能够将三角形参数毫无问题地传递给B,因为它们的类型将匹配
A
应该是:

int A(int ncontours, int cntr[], double* vertices[], int (*triangles) [3])
您应该得到一个编译错误,
a
的定义和声明不匹配


另外,能否显示调用
A
的代码?另一种选择是使A和B都取
int*[3]
,而不是
int(*)[3]
;关键是它们必须是相同的。

A
应该是:

int A(int ncontours, int cntr[], double* vertices[], int (*triangles) [3])
您应该得到一个编译错误,
a
的定义和声明不匹配


另外,能否显示调用
A
的代码?另一种选择是使A和B都取
int*[3]
,而不是
int(*)[3]
;关键是它们必须是相同的。

A
应该是:

int A(int ncontours, int cntr[], double* vertices[], int (*triangles) [3])
您应该得到一个编译错误,
a
的定义和声明不匹配


另外,能否显示调用
A
的代码?另一种选择是使A和B都取
int*[3]
,而不是
int(*)[3]
;关键是它们必须是相同的。

A
应该是:

int A(int ncontours, int cntr[], double* vertices[], int (*triangles) [3])
您应该得到一个编译错误,
a
的定义和声明不匹配


另外,能否显示调用
A
的代码?另一种选择是使A和B都取
int*[3]
,而不是
int(*)[3]
;关键是它们必须是相同的。

int*三角形[3]
int(*)[3]
不一样,或者错误信息不是很清楚吗?前者是一个指针数组(作为参数,下标是无用的),后者是指向三个
int
数组的指针,下标非常有意义。是的,我理解这一点,但我正在努力在实现中编写函数参数列表。我尝试了(*)和[3]的各种组合,但似乎都没有效果。你忽视了我的观点:
inta(int,int,cntr[],double*顶点[],int*三角形[3])
在函数的定义中,而与
extern
相同的函数是
extern inta(int,int*,double(*)[2],int(*)[3])。标题中
A
的decl与源文件中
A
的定义不匹配。他们不一样。顶点和三角形都不按类型匹配。修正定义以匹配decl。如果我将其更改为(int,int,double()[2],int(*)[3]);那么三角形是未知的。如何解决这个问题?
int*三角形[3]
int(*)[3]
不一样,或者错误信息不清楚吗?前者是一个指针数组(作为参数,下标是无用的),后者是指向三个
int
数组的指针,下标非常有意义。是的,我理解这一点,但我正在努力在实现中编写函数参数列表。我尝试了(*)和[3]的各种组合,但似乎没有一种有效。你忽视了我的观点:
inta(int-ncontours,int-cntr[],double*顶点[],int*三角形[3])
在函数的定义中,而与
extern
相同的函数是
extern-inta(int,int*,double(*)[2],int(*)[3]