楼上都回答得这么复杂吗?我写简单一点的
struct str{
int n;
int s;
};
void main()
{struct str a[2]={1,2,3,4};//声明一个结构数组并对数组a[0]中的成员n和s
分别赋值为1和2,对a[1]中的成员设置为3和4。
注:有些编译器可能不需要最前面的struct来声明
结构对象。
struct str *p=a; //声明一个结构指针,并把结构数组的地址赋给该指针
printf("%d",p->n); //访问结构数组对象a[0]中的变量n的值,也就是1
printf("%d",(p+1)>n); //访问结构数组对象a[1]中的变量n的值,也就是3。因为指针p+1就指向了结构数结a的下一个位置,也就是a[1]处。
}
main()
{
typedef struct srt{
int n;
int s;
}str_xx;//自定义一个结构体
str_xx test_str;//按照自定义的一个结构体定义一个结构体
str_xx *test_prt;//按照自定义的一个结构体定义一个指针0
test_prt = test_str;//把这个指针指向这个结构体
test_prt->n = 0;//给结构体变量赋值
test_prt->s = 0;//给结构体变量赋值
printf("test_prt->n = %d test_ptr->s = %d\n",test_prt->n,test_prt->s);
}
跟其他类型指针一样,定义一个结构体指针即可,例如:
struct name *p;//name结构体需要在这之前定义
这样指针p就是指向name结构的结构体指针。
int iLen = 5;
str* pStr = new str[iLen];
str* pNext = pStr;
for (int i = 0; i < iLen; ++i)
{
pNext->n = i;
pNext->s = i;
pNext++;
}
pNext = pStr;
for ()
{
输出类似
}