C语言求解,13.27帮我解答一下

img

img


13题和27题到底怎么做的呀,我就不理解这个吧
13题和27题到底怎么做的呀,我就不理解这个吧

这是两个最基础的题啊:
13题:你需要了解学习和梳理一下*指针所代表的含义,如果声明为 int *p; 实际上p是int*类型的。
这里的int * p = &n; 其实就是 int *p; p = &n; 那么p所指向的其实就是变量n所对应的地址,取地址对应的值,实际就是在(int *)类型的p前面加个(*) 即,这里的 p表示的是n的地址,而 *p表示的是n的地址对应的值就是n
27题是最基础的结构体初始化。 你需要去学习一下结构体的初始化。
struct A {int a; int b;}; A a = {1,2}; 再就是复杂的嵌套而已。

int main()
{
    //13题:理解int* 的概念(p指向一个地址),以及取地址上对应的值的方法 *p;
    int testn = 1, testm = 2;
    int* p = &testn;
    int* q = NULL; q = &testm;  //这两个等价
    //实际上 你要学习int *指针是啥, 实际上int *表示的是一个地址,取地址对应的值用*
    //如取testn的值,和地址: 
    printf("testn 地址: [%p:%p] testn值[%d:%d] \n ", &testn, p, *p, testn);
    //输出:testn 地址: [010FFAB0:010FFAB0] testn值[1:1]
    //可以看出: 地址可以用&testn 和int* 类型的p表示,而对应的值可以用testn和(*p)取值
    //====》这里你需要好好理解指针和*的概念,去百度或者书本上梳理一下。
//27题:你要梳理一下结构体的初始化。
    struct  A { int a; int b; };
    A t_a = { 1,2 };  //这个最简单结构体你能理解?     
    printf("struct data is [%d][%d] \n", t_a.a, t_a.b); //struct data is[1][2]

    //嵌套结构体的定义
    struct B { int c;  struct A d; }; //嵌套结构体 其实和struct B { int c;  int a; int b; };没差 只是换了方式
    B t_b = { 3,{1,2} }; //内部对象,按同样的{}方式初始化而已
    A t_c = t_b.d;  //和直接t_b.d.a  t_b.d.b是一样的
    printf("struct b is [%d, %d, %d] \n", t_b.c, t_c.a, t_c.b);//struct b is[3, 1, 2]

}

13选D啊
p和q分别是指向m和n的指针,那么* p和 * q分别表示m和n,因此D是对的
27题中,v是B结构变量,&v就是v变量地址,用->就是指针变量访问成员,v初始化将c赋值为'F',i和d分别赋值为3和4.5
(&v)->m.d相当于v.m.d,都是访问v变量的m成员变量,m又是A结构类型,因此v.m.d就是访问A结构类型中的d变量。由于前述d初始化为4.5,因此最终结果是4.5

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632