结构为C中不兼容的指针类型

时间:2014-08-08 12:00:14

标签: pointers struct

我创建了一个只有1个成员的结构,我唯一想要的是:

  1. 将结构传递给函数updateDispCase
  2. 更新范围内外的成员StartTime。
  3. 我遇到的问题是我收到错误“从不兼容的指针类型传递updateDispCase的参数”。如果我尝试取消注释“// dispCaseAr [iNumber] - > StartTime = 10;”程序崩溃。

    如何将我的结构传递给函数以及如何更新它?

    我的代码如下所示:

    #include <stdio.h>
    #define NROFDISPCASE 4
    
    typedef struct {
    int nr;
    double StartTime;
    } DispCase;
    
    DispCase dispCaseArray[NROFDISPCASE];
    
    //Preprocessor
    void updateDispCase(DispCase *dispCaseAr[],int);
    //
    
    int main(){
        int i;
    
        int value1[NROFDISPCASE]={1,2,3,4};                  // Display nr.
    
        //Initialize DisplayCase
        for(i = 0; i<NROFDISPCASE; i++){
            dispCaseArray[i].StartTime = value1[i];
        }
    
        updateDispCase(&dispCaseArray,0);
        printf("%f\n",dispCaseArray[0].StartTime);
    
        return 0;
    
    }
    
    void updateDispCase(DispCase *dispCaseAr[],int iNumber){
        //dispCaseAr[iNumber]->StartTime = 10;
    }
    

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,我认为写下问题的答案是个好主意。 我删除了&amp;从函数调用中删除函数中的方括号[]。新代码如下: 我忘了一个数组总是一个指针。

#include <stdio.h>
#define NROFDISPCASE 4

typedef struct {
int nr;
double StartTime;
} DispCase;


//Preprocessor
void updateDispCase(DispCase *dispCaseAr[],int);
//

int main(){
    DispCase dispCaseArray[NROFDISPCASE];
    int i;

    int value1[NROFDISPCASE]={1,2,3,4};                  // Display nr.

    //Initialize DisplayCase
    for(i = 0; i<NROFDISPCASE; i++){
        dispCaseArray[i].StartTime = value1[i];
    }

    updateDispCase(dispCaseArray,0);
    printf("%f\n",dispCaseArray[0].StartTime);

    return 0;

}

void updateDispCase(DispCase *dispCaseAr,int iNumber){
    dispCaseAr[iNumber]->StartTime = 10;
}