请老师解答,程序问题

# include <stdio.h>

struct tt
{
    int x;
    struct tt *y;
} s[2] = {1, 0, 2, 0};

int main()
{
    struct tt *p = s;
    p->y=s;
    printf("%d", ++p->x);
    
}
上面这段代码,看不明白,请老师给梳理一下

Tomguluson

赞同来自: wangxiaolei linxi fish

首先,tt是一个类,里面有成员变量x (int)和成员变量y (struct tt指针)  s[2] = {1, 0, 2, 0}的意思是初始化一个结构体数组(里面的元素都是tt类的对象),1, 0分别为第一个tt类的对象(实例)对应的x和y, x = 1; *y = 0.可以理解为 s = {ss1, ss2}, ss1, ss2都是tt类的对象。
    struct tt *p = s;

    p->y=s;
表示定义一个tt类型的指针p,初始化时指向s的首个位置,也就是第一个——ss1。
p -> y = s
表示p的成员变量y也指向s的首位置。
printf("%d", ++p->x);
最后,就是打印p的下一个元素ss2的成员变量x,为2.

linxi

赞同来自:

非常感谢,解释的如此详细,对我帮助很大。

要回复问题请先登录注册