通过指向指针的方法访问struct元素的地址

Cha*_*ani 5 c c++ memory struct pointers

可以说我有一个结构:

struct ABC 
{
   char a;
   char b;
   char c;
}
Run Code Online (Sandbox Code Playgroud)

我可以声明指向上述结构的指针:

struct ABC** abc

现在abc是一个指向结构指针的指针*abc,*abc是一个指向结构的结构指针abc.从而; sizeof(**abc)将是4,sizeof(*abc)也将是4并且sizeof(abc)将是3(考虑指针大小为4个字节,字符大小为1个字节).

我的问题是:

如何声明指向成员变量字符指针c使用abc了高于申报?

Jim*_*mbo 5

sizeof(**abc) will be 4, sizeof(*abc) will also be 4 and sizeof(abc) will be 3 
Run Code Online (Sandbox Code Playgroud)

我认为应该是,假设没有填充结构,

sizeof(**abc) will be 3, sizeof(*abc) will also be 4 and sizeof(abc) will be 4
                     ^^^                                                    ^^^  
                      Change here                                           change here
Run Code Online (Sandbox Code Playgroud)

要获得指向成员变量c的指针

&(*abc)->c
Run Code Online (Sandbox Code Playgroud)

注意周围的paranthesis *abc.原因是它->具有更高的优先级*,因此您需要确保首先发生第一个取消引用(从指针指向指针).

或者你可以做到

&(**abc).c
Run Code Online (Sandbox Code Playgroud)

括号的相同原因......在应用member-selection-via-object-name之前需要确保已取消引用(两次)..