通过指向struct的指针访问struct中的值

时间:2014-02-20 02:44:15

标签: c++ c arrays pointers struct

我有一个结构:

struct example {
    char arr[SIZE];
    char arr2[SIZE];
};

然后我有一个函数,它有一个参数,指向一些定义的struct例子的指针。如何访问其arr和arr2的值?

void someFunction (const void *ptr1) {

    struct example firstStruct = ...

    /* I want to access firstStruct.arr, firstStruct.arr2 somewhere here */

}

2 个答案:

答案 0 :(得分:1)

你可以这样做:

struct example *exPtr = (struct example*) ptr1;

然后,要访问结构中的特定成员,只需使用解除引用运算符( - >)。例如,

printf("arr = %s\narr2 = %s", exPtr->arr, exPtr->arr2)

答案 1 :(得分:1)

您有两种选择。

  • 投射空指针:

    void somefunction(const void* ptr1){
        struct example* firstStruct = (struct example*) ptr1;
        char c;
    
        // some access to array inside struct        
        c = firstStruct->arr[0];
    
    }
    
  • 将指向struct的指针作为参数传递:

    void somefunction(struct example* ptr1){
        char c;
    
        // just use the "->" operator 
        c = ptr1->arr[0];
    
    }