【发布时间】:2015-09-23 01:46:06
【问题描述】:
我在构建这个时遇到了问题:
#include <stdio.h>
#include <conio.h>
#define N 3
struct cliente
{
char nocliente[12];
int edad;
int precio;
};
void imprimir(cliente *cliente1[N]);
int main()
{
struct cliente cliente1[N];
for(int i=0; i<N; i++)
{
printf("\nIngrese el nombre del cliente %d\n", i+1);
scanf("%s", &cliente1[i].nocliente);
printf("\nIngrese la edad del cliente %d\n", i+1);
scanf("%d", &cliente1[i].edad);
printf("\nIngrese el precio del articulo del cliente %d\n", i+1);
scanf("%d\n", &cliente1[i].precio);
}
imprimir(&cliente1[N]);
getch();
return 0;
}
void imprimir(cliente *cliente1[N])
{
for(int i=0; i<N; i++)
{
printf("%s", cliente1[i]->nocliente);
printf("\n%d", cliente1[i]->edad);
printf("\n%d", cliente1[i]->precio);
}
}
这是编译器输出的错误:
cannot convert `cliente*` to `cliente**` for argument `1` to `void imprimir(cliente**)`
我已经尝试在原型和定义的参数中声明(cliente *cliente[]),但该函数也不起作用
【问题讨论】:
-
imprimir的参数应该是cliente client1[],并在适当的范围内调整其使用。它应该从main调用,只需imprimir(cliente1);。也许在您的文本/教程中花更多时间了解数组、指针、它们的相似之处和不同之处,可能会有所帮助。 -
然后这不是 c++ 。请将其标记为“C”
-
@Jagannath 在这段代码中有 一个 的东西需要 C++ 编译:
struct cliente { ... };,然后使用类型cliente没有保留字struct和没有正式的 typedef 到cliente将无法使用 C 进行编译。 -
@Whozcraig 哦,没有意识到。那么它就是一个完美的 C++ 代码 :)
标签: c++ function pointers struct parameters