#include<stdio.h>
#include<string.h>
//结构体指针: 指针的类型为结构体
typedef struct nodeData
{
int a;
char b[3];
}node;
int main()
{
//结构体数组, 数组里面的每个元素都是结构体
node n[3] = {
{1,"aaa"},
{2,"bbb"},
{3,"ccc"},
};
//定义一个结构体指针, p1是结构体数组的首元素的地址
node *p1 = n;//数组名, 就是首元素的地址
printf("%d, %s\n", p1->a, p1->b);//p1是一个结构体指针, 指向的是结构体数组的第一个元素{1,"aaa"}
//定义一个结构体指针数组: 这个数组里面的所有元素都是结构体指针
node *parr[3] = {&n[0],&n[1],&n[2]}; // 等效于node *parr[3] = {n,&n[1],&n[2]};
//parr[1]是指针数组的第二个元素&n[1], &n[1]代表的是结构体数组第二个元素的地址, 第二个元素是一个结构体,所以&n[1] 是一个结构体指针, 结构体指针访问元素的方式就是->
printf("%d", parr[1]->a);
return 0;
}
#include<stdio.h>
#include<string.h>
//结构体指针: 指针的类型为结构体
typedef struct nodeData
{
int a;
char b[3];
}node;
int main()
{
node n = {1,"shu"};
printf("%d , %s \n", n.a, n.b);
node *nPoint = &n;
//结构体指针访问结构体里面的内容用->
printf("%d \n", nPoint->a);
printf("%s\n", nPoint->b);
}
#include<stdio.h>
#include<string.h>
//结构体指针: 指针的类型为结构体
typedef struct nodeData
{
int a;
char b[3];
}node;
int main()
{
node n = {1,"shu"};
printf("%d , %s \n", n.a, n.b);
node *nPoint = &n;
//结构体指针访问结构体里面的内容用->
printf("%d \n", nPoint->a);
printf("%s\n", nPoint->b);
//通过指针修改结构体里面的内容
nPoint -> a = 20;
printf("%d \n", nPoint->a);
printf("%s\n", nPoint->b);
}
#include<stdio.h>
#include<string.h>
//结构体指针: 指针的类型为结构体
typedef struct nodeData
{
int a;
char b[3];
}node;
int main()
{
//结构体数组, 数组里面的每个元素都是结构体
node n[3] = {
{1,"aaa"},
{2,"bbb"},
{3,"ccc"},
};
//定义一个结构体指针, p1是结构体数组的首元素的地址
node *p1 = n;//数组名, 就是首元素的地址
printf("%d, %s\n", p1->a, p1->b);
//结构体指针偏移
printf("%d\n", (p1+2)->a);
printf("%s\n",(p1+2)->b);// p1是结构体指针, p1+2就是偏移两个,指向{3,"ccc"}
//也可以用解引用的方式访问, 解引用就是访问指针指向的内容
printf("%d\n", (*p1).a);//*p1解引用出来就是{1,"aaa"}, 这样就可以用.的方式访问,得到的就是a, 等价于p1->a
printf("%s\n", (*p1).b);
return 0;
}