首页 > 其他分享 >C语言学习--结构体指针

C语言学习--结构体指针

时间:2023-01-08 21:15:06浏览次数:35  
标签:node nPoint p1 -- C语言 printf 结构 指针

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

 

标签:node,nPoint,p1,--,C语言,printf,结构,指针
From: https://www.cnblogs.com/shunguo/p/17035342.html

相关文章

  • 「最短路」农场派对
    本题为1月4日22寒假集训每日一题题解题目来源:(未知)题面题目描述N(1<=N<=1000)头牛要去参加一场在编号为x(1<=x<=N)的牛的农场举行的派对。有M(1<=M<=100000)条有向......
  • 4.3JS中的原型的介绍
    ​ JS中原型的使用当我们用构造方法创建一个类时,在内存会预先调用构造方法创建一个对象,这对象我们称之为原型对象,构造方法对象中有一个prototype属性指向该对象,原型......
  • 4.3JS中的原型的介绍
    ​ JS中原型的使用当我们用构造方法创建一个类时,在内存会预先调用构造方法创建一个对象,这对象我们称之为原型对象,构造方法对象中有一个prototype属性指向该对象,原型......
  • linux
    linux操作系统linux的文件结构在linux当中,所有的设备,所有的硬件,软件,网卡等。。。一切皆文件在Linux系统中,有几个目录是比较重要的,平时需要注意不要误删除或者随意更......
  • 逻辑判断语句:if-else、switch——the sixteenth——2023.1.8
    1#include<stdio.h>2voidmain(void)3{4charch;5printf("请输入一个字符:");6ch=getchar();/*getchar、putchar专门用于字符输入输出;7......
  • 字符串的不同字串个数
    字符串的不同字串个数给定长度为\(n\)的字符串\(s\),求该字符串的不同字串的个数朴素暴力时间复杂度\(O(n^3logn)\)枚举子串的左右端点,取出后使用set去重strings;s......
  • AcWing第85场周赛
    这场周赛是手速局hh死或生某国正在以投票的方式决定2名死刑犯(编号1∼2)的生死。共有n组人员(编号1∼n)参与投票,每组10人。每组成员只参与一名死刑犯的投票,其中第......
  • 集合划分个数
    题目链接集合划分个数做法就是求$B_n$(第$n$项贝尔数,将$n$个有标号的球划分为若干集合的方案数)。一个非空集合的指数生成函数为$F(x)=e^x-1$,则:\[B(......
  • 桥接模式
    概述《设计模式》中对于“桥接模式”的动机描述如下:将抽象部分与它的实现部分分离,使他们可以独立地变化桥接模式的类结构图一般如下所示:一般在以下几个场景使用桥......
  • 任正非传读后感6
    任正非老爷子确实了不起,从1987年创建华为6个人,到现在将近20万人。从一个名不经传的小作坊,到现在的跨国公司。也许是我读书少,名人伟人做什么都是对的。前几天读了乔布斯传......