C语言搞不懂啊

来源:百度知道 编辑:UC知道 时间:2024/06/12 10:09:47
QUESTION 2:
#include
struct tt
{int x;struct tt *y;} *p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
main()
{
int i,
p=a;
for(i=1;i<=2;i++) {printf("%d",p->x);p=p->y;}
}

这一句是什么意思 我 完全不懂
for(i=1;i<=2;i++) {printf("%d",p->x);p=p->y;}
“->”这是什么意思??
具体怎么个调用法,我这现没书啊..
我知道是结构体套结构体
20,a+1
15,a+2
30,a+3
17,a
就是p=p->y 这里的y是多少?是a+1吗?是他 接下来又是怎样的算?? 会追加分的

哈哈!你前面定义了一个结构体哦!就是
struct tt
{int x;struct tt *y;} *p;
看见了吗?前面部分是定义【struct tt
{int x;struct tt *y;}】,后面部分是初始化【 *p】。这是定义了一个指针【*p】指向这个结构体。
后来又有一句p=a; 也就是指针*p指向a[4]={20,a+1,15,a+2,30,a+3,17,a};
又调用结构体里的东西,如果是指针就用
“->”
若是直接调用就可以用“.”

能懂吗????
如果不懂,你可以借本C语言书,看看结构体那一章,就能懂了!
希望我的回答能对你有用!

呵呵,补充:再看你那定义:
{int x;struct tt *y;} 看见没定义里面还定义了一个struct tt *y; 说白了点,就是在结构体里面再定义一个结构体,这p=p->y的意思就是调用原来结构体里面的结构体!
你看 这句struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};
其实定义了四个结构体!分别是
20,a+1,
15,a+2,
30,a+3,
17,a
所以p=p->y 就是分别调用他们!

我晕,累死我了,这么解释真费脑筋。
还是那句话!若不懂,还得再看看书!
这么给你解释两句,你还是不懂的!
愿你能多追加分!哈哈!

这是一个链表
p是一个指针
它指向的对象是一个结构 tt
p->y是 p指向的这个结构里的 y指针
y指向的也是一个结构
p=p->y是使得p这个指针指向y这个指针指向的那个结构(也就是后一个结构)
这样一长传就构成了链表

指向该后面所指的成员啊
p是一个结构体指针,p->x就是p中x的值
p=p->是指针后移

“->”前面的是指针,后面是该指针所指向的结构体里的成员变量或成员函数。<