Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        3年前关闭。
                                                                                            
                
        
我再次遇到C编程问题。我有一个函数,基本上有一个结构元素数组作为参数,现在我想在数组中打印所有这些元素的列表。但我没有这样做的语法。

ANLAGE是具有一些float和int值以及一些char数组的结构

typedef struct{
    unsigned int InventarNr;
    char Anlagenbez[15];
    char Standort[15];
    float Basiswert; /* in EUR */
    unsigned int Nutzdauer; /* in Jahren */
    unsigned int AnschJahr;
} ANLAGE;


anlage_arr的初始化如下:

ANLAGE *anlage_arr;
anlage_arr = malloc(sizeof(ANLAGE));


我的函数现在看起来像这样:

int erstelle_anlagenliste(ANLAGE *anlage_arr, size_t size) {


    int i;

    for(i = 0; i < size; i++){
        printf("%-15d%-20s%-20s%.1f%-15d%-15d%\n",
                 anlage_arr[i].InventarNr,anlage_arr[i].Anlagenbez,
                 anlage_arr[i].Standort, anlage_arr[i].Basiswert,
                 anlage_arr[i].Basiswert, anlage_arr[i].AnschJahr);
    }
    return 1;
}


然后我这样调用函数:

erstelle_anlagenliste(&anlage_arr, size);


当我这样做时,我只是得到一些随机值,我猜是这些值的地址。但是有人可以帮助我如何获取数组中元素的实际值吗?

先感谢您!

最佳答案

在这次通话中

erstelle_anlagenliste(&anlage_arr, size);


第一个参数的类型是ANLAGE **,因为变量anlage_arr的声明像

ANLAGE *anlage_arr;


但是该函数希望第一个参数的类型为ANLAGE *

int erstelle_anlagenliste(ANLAGE *anlage_arr, size_t size) {


因此像这样调用函数

erstelle_anlagenliste( anlage_arr, size);
                       ^^^^^^^^^^


还应考虑到,如果您要处理一个具有多个元素的数组,请使用此语句

anlage_arr = malloc(sizeof(ANLAGE));


写类似

anlage_arr = malloc( size * sizeof(ANLAGE));

关于c - 我如何使用C中的指针的指针? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40575690/

10-10 15:21