C语言学习--结构体指针
#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; }