一、结构体指针
结构体指针定义与赋值:
#include<stdio.h>
#include<stdlib.h>
typedef struct struct_test{
int a;
int b;
}test;
int main()
{
test s; // 定义了一个结构体变量
s.a = 1; // 给变量的成员赋值
test* ss = &s; // 定义了一个结构体指针变量,并指向s
ss->a = 92; // 通过指针对指向的变量的成员进行赋值
return 0;
}
2、结构体数组的指针,访问结构体数组元素的两种方式
#include<stdio.h>
#include<stdlib.h>
typedef struct struct_test{
int a;
int b;
}test;
int main()
{
test s[5]; // 定义结构体数组变量s
for(int i = 0;i <= 4;++i)
s[i].a = i; // 给s赋初值
test *p = s; // 定义结构体数组指针p,并指向s
/* 方式一 把指针变量当成数组名来访问,此时p相当于s,也相当于引用test (&p)[5] = s */
for(int i = 0;i <= 4;++i)
p[i].a = p[i].a + i;
/* 方式二 通过指针域方式访问,若结构体只有一个成员,(p + i)->id也等价于 *(p + i) */
for(int i = 0;i <= 4;++i)
(p + i)->a = (p + i)->a + i;
for(int i = 0;i <= 4;++i)
printf("%d ",(p+i)->a);
// 输出结果为 0 3 6 9 12
return 0;
}
(本文记录自己的学习笔记,水平有限,若有误,请多多评论指教)