c中的结构,其成员也是结构

as3*_*unt 1 c struct lvalue

我有以下内容structs:

typedef struct stack {
    void* ss_sp;
    size_t ss_size;
    // ...
} stack_t; 

typedef struct ucontext {
    ucontext_t* uc_link;
    stack_t uc_stack;
    // ...
} ucontext_t;

typedef struct mythread_type {
    ucontext_t context;
    int ID;
    int status;
} mythread_t; 
Run Code Online (Sandbox Code Playgroud)

现在我有一个数组如下:

mythread_t mythreads[100];
Run Code Online (Sandbox Code Playgroud)

我想避免使用

mythreads[0].context.uc_stack.ss_size 
Run Code Online (Sandbox Code Playgroud)

出于可读性的原因.

现在我想知道以下两个代码块是否相同:

我想要的是mythreads[0]堆栈的上下文分配1024个字节.

Ana*_*lyS 7

以下是mythreads [0] .context的副本:

ucontext_t c = mythreads[0].context;
Run Code Online (Sandbox Code Playgroud)

相反,下面是指向mythreads [0]上下文的指针

ucontext_t* c = &(mythreads[0].context);
Run Code Online (Sandbox Code Playgroud)

因此,代码的第一个安静使得修改副本(它不会影响mythreads [0]上下文),第二个修改mythreads [0]上下文.