2016-11-13 19 views
0

我再次遇到C编程问题。我有一个函数,基本上有一个结构元素作为参数数组,现在我想打印一个列表中的所有这些元素的数组。但我没有得到这样的语法。我如何使用C中的指针指针?

原基是一些float和int类型和一些字符阵列的结构体内部

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

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

谢谢你提前!

+2

好的,我们应该回答这个问题,而不知道'ANLAGE'是什么,或者在函数'erstelle_anlagenliste'被调用之前如何初始化'anlage_arr'? –

+0

也@barakmanos是我们应该做横向滚动吗?只是问问'。 :P –

+1

请显示[mcve] – OldProgrammer

回答

1

在这个调用

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)); 
+0

谢谢! :)它的工作 – djafix

+0

@djafix没有。不用谢。:) –