第十章 结构体、共用体例题解析
作者:互联网
例题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