Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.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++;_C++_Function_Pointers_Struct_Parameters - Fatal编程技术网

C++ 在c++;

C++ 在c++;,c++,function,pointers,struct,parameters,C++,Function,Pointers,Struct,Parameters,我在构建时遇到问题: #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(in

我在构建时遇到问题:

#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);
    }
}

我尝试在原型和定义的参数中声明
(cliente*cliente[])
,但函数也不起作用,请使用以下内容:

void imprimir(cliente *cliente1)
用于函数声明

更改

imprimir(&cliente1);//you are passing the whole thing not just #3


void imprimir(cliente *cliente1) //drop the N
  • 正确(且容易混淆)的语法是

    void imprimir(/* const */ cliente (&cliente1)[N]);
    
    然后叫它

    imprimir(cliente1);
    
  • 更简单的语法:

    void imprimir(/* const */ cliente *cliente1, std::size_t size);
    
    打电话

    imprimir(cliente1, N);
    
  • 使用类可能有助于
    std::vector
    std::array

    std::array<cliente, N> cliente1;
    imprimir(/* const */ std::array<cliente, N>& cliente1);
    

注意:我在注释中添加了
const
,因为数组没有被修改。

您的
imprimir
参数应该是
clientclient1[]
,并且它的用法在适当的范围内进行了调整。它应该通过简单的
imprimir(client1)从
main
调用。也许你在文本/教程中更多的时间讨论数组、指针、它们的相似性和差异,也许会有所帮助,而这不是C++。请将其标记为“C”@ JGANNATH。在这个代码中有一件事需要C++编译:<代码> Stutt clit{{}};code>,则以后使用类型
cliente
时,如果没有保留字
struct
,并且没有对
cliente
进行正式的typedef,则无法使用C进行编译。@Whozcraig oh没有意识到。那么它是一个完美的C++代码:
std::array<cliente, N> cliente1;
imprimir(/* const */ std::array<cliente, N>& cliente1);
imprimir(cliente1);