簡體   English   中英

指向結構內結構的指針

[英]Pointers to a struct inside a struct

我有兩個結構(one_d 和 two_d)。 我有一個 function 將 struct two_d *smg 作為輸入。 在 main() 中,我正在嘗試創建這樣的 smg,因此它將返回值 c 增加。

我的問題是,在創建 struct two_d smg[2] 的數組時,我不確定如何放入有關其值的內部信息,因為它是指向不同結構的指針。

那么如何在結構中使用指向結構的指針呢? 我想創建 struct two_d smg[2] 但我現在不知道如何處理其中的 struct one_d *a 字段

#include <stdio.h>

enum sid 
{

DRB,
DRA,
};



struct one_d
{
unsigned int r;
unsigned int *p;
};


struct two_d
{
struct one_d *a;
enum sid z;
};


unsigned int getSmg(struct two_d *smg)
{
unsigned int c = 0;  
const struct two_d *sd = NULL;
const struct one_d *ed = NULL;


for (sd = smg; sd->a != NULL; ++sd)
{
   
    for (ed = sd->a; ed->p != NULL; ++ed)
    {
      
        if (DRA == sd->z)
        {
            /*P Increment the clear-state buffer size */
            c += 1 + ed->r;
        }
     
    }
    
}


return c;
}





int main(void)
{
unsigned int rVal = 0;

struct two_d smg[2]={
//
//  [0].a ={1,0},
//  [0].z =DRA,
//  [1].a={1,0},
// [1].z =DRA,
};

rVal = getSmg(smg);

printf("Return value is a %d\n", rVal);

printf("Return value is a l");
return( 0 );
}

好吧,至少這個編譯...我不是運行它的游戲,雖然...

物有所值...

enum sid { DRB, DRA, DRAwhoCares };

typedef struct {
    unsigned int r;
    unsigned int *p;
} oneD_t;

typedef struct {
    oneD_t *a;
    enum sid z;
} twoD_t;

unsigned int getSmg( twoD_t *smg ) {
    unsigned int c = 0;  

    for( twoD_t *sd = smg; sd->a != NULL; +sd++ ) {
        for( oneD_t *ed = sd->a; ed->p != NULL; ed++ ) {
            if( DRA == sd->z ) {
                /*P Increment the clear-state buffer size */
                c += 1 + ed->r;
            }
        }
    }
    return c;
}

int main( void ) {

    oneD_t foo[] = { { 1, NULL }, /* ... */ };
    oneD_t bar[] = { { 1, NULL }, /* ... */ };

    twoD_t smg[]={
        { foo, DRA, },
        { bar, DRA, },
        { NULL, DRAwhoCares, },
    };

    unsigned int rVal = getSmg( smg );

    printf( "Return value: %u\n", rVal );

    return 0; // return is not a function call... No parenthesis...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM