4月从零学习C语言(第23天)——结构类型_#include <stdio(1),2024年最新Golang开发面试基础

19 阅读2分钟

pl和p2都是point里面有x和y的值

形式2:

struct {
  int x;
  int y;
} pl,p2;


pl和p2都是一种无名结构,里面有x和y

形式3:

struct point {
  int x;
  int y;
} pl,p2;


pl和p2都是point里面有x和y的值t

注意:
对于第一和第三种形式,都声明了结构point。但是第二种形式没有声明point,只是定义了两个变量

结构声明在函数内/外?

在一开始的例子中我们的结构是声明在函数里的那么它和本地变量一样,在函数内部声明的结构类型只能在函数内部使用。

那如果我们在函数外部生命呢?

看一下:

#include <stdio.h>

struct date {
  int month;
  int day;
  int year;
};

int main(int argc,char const *argv[])
{
  
  struct date today;
  today.month = 04;
  today.day = 23;
  today.year = 2022;
  printf("Today's date is %i-%i-%i.\n",
    today .year,today.month,today.day);
  return 0;
}


运行结果:
在这里插入图片描述
我们可以看到我们在函数外部声明结构依然可以使用,所以通常在函数外部声明结构类型,这样就可以被更多的函数所使用了。

结构的初始化

方式1:

#include <stdio.h>

struct date {
  int month;
  int day;
  int year;
};

int main(int argc,char const *argv[])
{
  
  struct date today = {07,31,2014};

  printf("Today's date is %i-%i-%i.\n",
    today .year,today.month,today.day);

  return 0;
}

方式2:

#include <stdio.h>

struct date {
  int month;
  int day;
  int year;
};

int main(int argc,char const *argv[])
{
  struct date thismonth = {.month=7 , .year=2014};
  
  printf("This month is %i-%i-%i.\n",
    thismonth.year,thismonth.month,thismonth.day);
    
  return 0;
}

结构成员

  • 结构和数组有点像

  • 数组用运算符和下标访问其成员

    • a[0]= 10;
  • 结构用.运算符和名字访问其成员

    • today.day
    • student.firstName
    • pl.x
    • pl.y

结构运算

  • 要访问整个结构,直接用结构变量的名字
  • 对于整个结构,可以做赋值、取地址,也可以传递给函数参数
pl = (struct point){5,10};//相当于pl.x = 5;pl.y = 10;

pl = p2;//相当于pl.x = p2.x; pl.y = p2.y;

img img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!