c语言关于指向结构体的指针的理解

来源:百度知道 编辑:UC知道 时间:2024/09/20 09:38:47
怎么理解指向结构体的指针在声明一个变量
比如说
typedef struct PolyNode{
float coef;
int expn;
struct PolyNode *next;
}PolyNode,*Polynomial;
Polynomial p //怎么理解这个p呢???
那如果 是定义Polynomial *p
又是什么意思

1、
struct s{
char c;
int i;
};

struct *p1;/*p1是指向s结构体的指针*/

2、
typedef struct{
char c;
int i;
}s,*ps;

s *p2;/*p2是指向结构体的指针*/
ps p3;/*p3是指向s结构体的指针*/

Polynomial *p
那p就是一个指向“PolyNode结构体指针”的指针。

typedef struct {
...
}*Polynomial;
这说明Polynomial是定义指针类型的,指向对象是这个结构体。

Polynomial p;就是定义了一个指向这种结构体的指针。

Polynomial p ;定义的p是Polynomial 类型的;Polynomial 是一个指针类型,一个指向结构体的指针;
Polynomial *p;定义的p是一个指向Polynomial 类型的指针;Polynomial 是一个指针类型,一个指向结构体的指针;所以p是指向指针的指针;

妈呀,正确的参照楼上,不过我这么说可能好懂点。但不是正确的哦

这里*polynomial 就是PolyNode。Polynomial则是PolyNode的地址。
那么Polynomial p 就是地址类型的p,p就是地址,这时候的*p就是PolyNode

*polynomial=PolyNode.... Polynomial=p ..==》 *polynomial=*p=PolyNode
等式2两边同时加*,加上等式1,推出等式3.
这个不成立的哦,纯属自己YY,只是帮助理解。就是这么回事。。

定义Polynomial *p 则*p是地址,这时候PolyNode是**p

*polynomial=PolyNode... Polynomial=*p.. ==》 *polynomial=*