1

私はまだポインターと構造体について学んでいますが、ポインターを使用して個々のメンバーに順番にアクセスできるかどうかを誰かが知っていることを願っていますか?

    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.

これはコンパイルされていないため、その他のエラーは意図的ではありません。

4

1 に答える 1

0

あなたは一般的にそれをしたくありません。構造体メンバーには個別にアクセスする必要があります。複数の連続した構造体メンバーがメモリにどのように配置されるかというメモリ レイアウトを想定すると、多くの移植性の問題が発生する可能性があります。また、ほとんどの (C に似た) 言語では、構造体のメンバーを通じて「内省」する方法が提供されません。

于 2012-12-05T18:03:28.800 に答える