(*P) 表示 返回P的值作为地址的那个空间的取值。
"."操作符,左操作数是结构变量的名字,右操作数是需要访问的成员的名字,结合性自左向右。
“->”做操作书是一个指向结构的指针,右操作数同上。
例子取自《C与指针》
#include "StdAfx.h"
#include <iostream>
using namespace std;
typedef struct {
int a;
short b[2];
}EX1;
typedef struct EX2{
int a;
EX1 c;
struct EX2 *d;
}EX;
int main ()
{
EX *y = new EX; //指针y指向定义的结构体
EX p2={189,{5,{6,7}},y};
EX *p=&p2; //指针p指向结构体p2
y->a=100;
y->c.a=10;
cout<<y<<endl;
cout<<p->d<<endl; //获得结构体成员变量y的数值
cout<<p->d->a<<endl;
cout<<p->d->c.a<<endl;
system("pause");
return 0;
}
结构自引用:
struct SELF_REF1{
int a;
struct SELF_REF1 b;
int ;
};
相当于无限递归,编译器是无法知道索要定义的大小的。不可这样自引用。
struct SELF_REF1{
int a;
struct SELF_REF1 *b;
int ;
};
编译器在结构长度确定之前就知道指针的长度。
----------指针长度固定4字节