struct st
{int n;
float x;
}*p; //这有两层意思,分解开来就是:
1) 声明一个结构体struct st{int n; float x;}
2) 定义一个st结构体指针变量struct st *p;
p指向结构体st的指针,属于数据类型定义与变量合起来定义:等效于下面:
//定义新的结构体数据类型
struct st {
int n;
float x;
};
//申明结构体变量
struct st *p;
//定义结构体st类型数组并初始化,没有全部初始化,只有数组中的第一个,第二个的第一个成员被初始化,余下的值都是未定义的,可能是任何值
struct st arr[5]={10,4,5,};
//我们都知道数组有一特性,与指针藕断丝连,数组名称指向,数组中的第一个元素,因此有下面的写法
p=arr;//p指向数组中的第一个结构体
//用指针访问结构体成员操作符是->因为,->操作符优先级高于前置++,因此,先取出数组arr中第一个结构体的n成员变量,然后递增1,再使用标准库函数printf输出结果11。
printf("%d\n",++p->n);