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;
}

 

posted @ 2023-01-08 20:58  朵朵奇fa  阅读(89)  评论(0编辑  收藏  举报