数组结构,指针按顺序访问成员

时间:2012-12-05 17:59:52

标签: pointers struct typedef members

我还在学习指针和结构,但我希望有人可能知道是否可以通过使用指针顺序访问各个成员?

    Typedef record_data {  
     float a;  
     float b;  
     float c;  
     }records,*Sptr;  

    records lists[5];  
    Sptr ptr;   

示例:为5个列表中的所有成员分配值为float 1.0

    // instead of this      
    (void)testworks(void){     
    int i;
    float j=1.0;  
    ptr = &lists[i]  
    ptr->lists[0].a = j;  
    ptr->lists[0].b = j;  
    ptr->lists[0].c = j;  
    ptr->lists[1].a = j;  
    // ... and so on  
    ptr->lists[4].c = j;  
    }  


    // want to do this
    (void)testwannado(void){  
    int a,i;
    float j=1.0;  
    ptr = &lists[i]   
    for (a=0;a<5;a++){  // step through typedef structs   
        for (i=0;i<3;i++){  // step through members   
        ???    
        }  
    }  

请原谅我在下面这个例子中的错误,但它代表了我能想到的最接近我想要完成的事情。

    int *mptr;  
    mptr = &(ptr->lists[0].a)   // want to assign a pointer to members so all 3 members can be used...  
    *mptr++ = j;  // so I can do something like this.

这是未编译的,因此任何其他错误都是无意的。

1 个答案:

答案 0 :(得分:0)

您通常不希望这样做。应单独访问结构成员。通过假设多个连续结构成员如何放在内存中的内存布局,可能会遇到很多可移植性问题。大多数(类似C语言)语言都没有为你提供一种通过结构成员“内省”的方法。