其他分享
首页 > 其他分享> > 第十章 结构体、共用体例题解析

第十章 结构体、共用体例题解析

作者:互联网

例题1.数组名和结构名有什么区别?

  结构是一个标量。和其它任何标量一样,当结构名在表达式中作为右值使用时,它表示存储在结构中的值。当它作为左值使用时,它表示结构体存储的内存位置。数组名在表达式中作为右值使用时,它的值是一个指向数组第一个元素的指针。由于它的值是一个常量指针,所以数组名不能作为左值使用。

例题2.考虑下面这些声明和数据:

struct NODE {
    int a;
    struct NODE *b;
    struct NODE *c;
};
struct NODE nodes[5] = {
    {5,nodes + 3,NULL},
    {15,nodes + 4,nodes + 3},
    {22,NULL,nodes + 4},
    {12,nodes + 1,nodes},
    {18,nodes + 2,nodes + 1}
};

对下面每个表达式求值,并写出它的值。假定nodes数组在内存中的起始位置为200,并且在这台机器上指针和整数的长度都是4字节。

 表达式            值              表达式            值            

nodes         200         &nodes           200 
nodes[3].c      200         &nodes[3].c->a     200 
&nodes->a       200         nodes.a          非法 nodes[3].a      12          nodes[3].c->a      5         
*nodes      { 5,nodes + 3,NULL }    *nodes.a      非法 (*nodes).a      5          nodes->a          5 nodes[3].b->b    248         *nodes[3].b->b   { 18,nodes + 12,nodes + 1 } &nodes[3].a    236          &nodes[3].c     244 &nodes[3].c->a 200         & nodes->a    200 np       224          np->a    22 np->c->c->a    15          npp       216 npp->a       非法          *npp      248 *npp->a       非法         **npp         { 18,nodes + 2,nodes + 1 } (*npp)->a     18        & np         未知       
&np->a        224        & np->c->c->a 212

 

标签:NODE,200,struct,第十章,体例,np,共用,nodes,npp
来源: https://www.cnblogs.com/Yang-Xin-Yi/p/13591166.html