在C和C++中使用结构

use*_*670 3 c structure

我是C的新手,我想知道如何访问放置在结构中的结构内部的元素.

struct profile_t
{
    unsigned char length;
    unsigned char type;
    unsigned char *data;
};

typedef struct profile_datagram_t
{
    unsigned char src[4];
    unsigned char dst[4];
    unsigned char ver;
    unsigned char n;
    struct profile_t profiles[MAXPROFILES];     
} header;
Run Code Online (Sandbox Code Playgroud)

如何访问profile_t中的元素?

Mah*_*esh 5

struct profile_t;
Run Code Online (Sandbox Code Playgroud)

上述语句不会创建类型的对象profile_t.你需要做的是 -

struct profile_t inObj ;
Run Code Online (Sandbox Code Playgroud)

然后为其创建对象profile_datagram_t.即

header outObj ;  // header typedef for profile_datagram_t
Run Code Online (Sandbox Code Playgroud)

现在你可以访问像 -

outObj.inObj.type = 'a' ; // As an example
Run Code Online (Sandbox Code Playgroud)

在C++中,在为结构创建对象时,不需要struct关键字.


在您的问题编辑和评论:

struct profile_t profiles[MAXPROFILES];
Run Code Online (Sandbox Code Playgroud)

profiles是一个类型的对象数组profile_t.要访问单个对象,只需使用[]运算符即可.即

header obj ;
obj.profiles[0].type = 'a' ; // Example
Run Code Online (Sandbox Code Playgroud)

obj.profiles[i],其中i可以取值从0MAXPROFILES - 1,给出索引处的对象i.