C语言学习日记5

  又看了一遍超体,印象最深的是那个黑人上课的场景,真是我想象中的校园,一心学术。

  1、结构体

    没有结构体之前,在C语言中,数据的组织依靠:变量+数组。最简单的时候,只需要使用基本数据类型来定义单个变量,需要几个变量就定义几个。后来情况变复杂了,有事需要很多意义相关的变量,这时候数组出现了。数组解决了需要很多类型相同,意义相关的变量的问题。  但是数组是有限制的。数组最大的不足在于,一个数组只能存储很多个数据类型相同的变量。(譬如使用一个数据结构来保存一个学生的所有信息:姓名,学号,性别。)

    什么是结构体?结构体其实就是一个集合,集合中包含很多个元素,这些元素的数据类型可以相同也可以不相同。所以结构体是一种数据封装的方法。结构体存在的意义就在于,把很多数据类型不同的变量封装在一起,组成一个大的新的数据类型。

    数据结构:把庞大复杂的数据用一定的方式组织管理起来,便于操作(查找,增加,删除等)这就叫数据结构。 

#include <stdio.h>
//PS:
//1.结构体类型的定义是在函数外面,不是lim
//2.结构体定义的是一个新的组合类型,而不是变量,也不消耗内存

struct student
{
  char name[20]; //学生姓名
  unsigned int num; //学号
  int male; //性别
};  //注意;不能少

int main()
{
  struct student s1; //s1是一个变量,类型是struct student,定义,无初始化 
  //给结构体变量赋值
  s1.name[0]=‘t‘;
  s1.name[1]=‘h‘;
  s1.name[2]=‘o‘;
  s1.name[3]=‘r‘;
  s1.name[4]=‘\0‘;
  s1.num=1;
  s1.male=0;
  printf("s1.name=%s\n",s1.name);
  printf("s1.num=%d\n",s1.num);
  printf("s1.male=%d\n",s1.male);
  // printf("\n");
  return 0;
}

  结构体和数组的关联:数组是一种特殊的结构体,特殊之处在于封装内的各个元素类型是相同的。结构体和数组都输对一些子元素的封装,因此定义的时候都是封装作为整体定义,但是使用的时候,都是使用封装中的子元素。一般结构体变量和数组变量都不会作为一个整体操作。

  使用结构体的步骤:

    第一步:定义结构体类型。结构体类型的定义是在函数外面。

    第二步:使用第一步定义的类型来定义结构体变量。

    第三步:使用变量。实际上使用结构体变量的时候,使用的是结构体变量中封装的各个子元素,而不是结构体变量本身。

结构体定义 

struct student
{
  char a;
  int b;
  float c;
  double d;
};

int main()
{
  struct student s=
  {
    .a = 1,
    .b = 2,
    .c = 3,
    .d = 4,//C++扩展的定义方式,梦幻级的方法,想定义谁就定义谁,可以跳过元素
  } ;

  struct student s0={1,2,3,4};完全初始化,依次一个个初始化。

}

  2、共用体union

    union在定义和使用形式上和struct很相似。但是两种数据结构是完全不同的两类东西。

    结构体,是对多个数据的组合与封装。

    共用体,共用体中只有一个东西,只是它被好几个名字(和类型)共用。

#include <stdio.h>
struct male
{
char name[20];//男生。名字。年纪。篮球课成绩。
int age;
int basketball;
};

struct female
{
char name[20];//女生。名字。年纪。健美操成绩。
int age;
int aerobics;
};

union student
{
struct male m;//使用.m时男生,male结构体。用.f女生,female结构体
struct female f;
};

int main(void)
{
union student u1;
u1.f.aerobics = 100;
printf("u1.m.basketball=%d\nu1.f.aerobics=%d\n",u1.m.basketball,u1.f.aerobics);
return 0;
}

  3、宏定义

#define N 123//宏定义的格式

//ps:1.宏定义一般在函数的外面  2.宏定义必须要先定义,在使用宏。  3.宏名一般用大写

时间: 2024-10-07 14:16:06

C语言学习日记5的相关文章

C语言学习日记 week1

作为一名业外人士,时光辗转已经从学校毕业两年半了,经历了工作.考研(失败).再找工作最终决定向一名程序员发展.虽说最近人工智能传的沸沸扬扬,未来要取代各种基础工作岗位(当然也包括程序员),但是我认为只要比机器人学的更深入就行了,如果学的不如机器人那做什么行业又不是一样是被取代呢?当然也是有很多行业职能是人工智能暂时难以触及的,不过很多对于我来说并不是很感冒,至少现在是的. 虽然报名学的Java,但是还未正式上课,老师先普及了一下C语言,为期两周,第一周已经结束了,同样也是在老师的建议下开通了这样

C语言学习日记3

昨天又偷懒了哎,简直没救了我. 今天魔兽首映!ohyeah!好期待啊~虽然好像爆出很多消息说其实是烂片. 1.函数应用:math.h int abs(int i)//求绝对值 long labs(long i)//求长整型绝对值 double fabs(double i)//实型绝对值 ps:常量后可加写 u,l,f 加以区别 double sin(double i)//正弦函数 double cos(double i)//余弦函数 double tan(double i)//正切函数 字符和字

C语言学习日记6

1.数据类型 1.1 基本数据类型 数据类型分2类:基本数据类型+复合类型 基本类型:char short int long float double 复合类型:数组 结构体 共用体 类(c++) 1.1.1内存占用与sizeof运算符 数据类型就好像一个个的模子,这个模子实例化出C语言的变量.变量存储在内存中,需要占用一定的内存空间.一个变量占用多少空间由变量的数据类型决定的. 每种数据类型,在不同的机器平台上占用内存是不同的.我们一般讲的时候都是以32位CPU为默认的硬件平台来描述: cha

C语言学习日记4

发现一个很好的学习视频,叫朱老师物联网大讲堂. 1.指针类型:在定义指针的时候 数据类型 *指针名 这个地方的数据类型,是指指针指向的变量的数据类型.必须匹配! 在定义的时候可以这么定义 int *pint; float *pfloat; char *pchar; double *pdouble; int *p; 理解方法,首先看到p,这个是变量名,其次,p前面有个*,说明这个变量p是个指针变量,最后,*p前面有个int,说明这个指针变量p所指向的是一个int型的数据.或者可以写成int* p:

C语言学习日记8

4.1.1 程序运行为什么需要内存? 4.1.1.1 计算机程序运行的目的. 4.1.1.2 计算机程序运行过程 4.1.1.3 冯诺依曼结构和哈佛结构 冯诺依曼结构是:数据和代码放在一起. 哈佛结构是:数据和代码分开存在. 什么是代码:函数 什么是数据:全局变量.局部变量. 4.1.1.4 动态内存DRAM和静态内存SRAM. 4.1.1.5 总结:为什么需要内存? 4.1.1.6 如何管理内存 从操作系统角度讲:操作系统掌握所有的内存,因为内存很大,所以操作系统把内存分为1个个的页面(一般是

C语言学习日记 week2 day1-2 方法 数组

一.方法(Method) java中的方法(Method)类似于C语言中的函数(function),都是一系列代码的集合,将一系列代码打包用以实现一个特定的功能就成为一个方法了: 1)方法的定义: [qualifier]   return value type     Method name        (datatype parameter,datatype parameter,,,,) [修饰符]           返回值类型                方法名            

C语言学习日记7

2.2 常量 程序运行过程中不会改变的量.初始化的时候给定. 2.2.1 #define 2.2.2 const const 修饰变量后,变量就变成常量了. const 和指针结合,共有4种形式 const int *p; p是一个指针,指针指向一个int型数据.p所指向的是个常量. int const *p; p是一个指针,指针指向一个int型数据.p所指向的是个常量. int *const p; p是一个指针,指针指向一个int型数据.p本身是个常量,p所指向的是个变量. const int

C语言学习日记2

昨天相亲好晚才回,又看了会视频,en...妹子挺漂亮的. 1.goto 语句(如goto flag1; flag1:),标识符和goto要在同一个函数中,上下无所谓. 2.“”是字符串,’‘是单个字符. 3.数组: 一维数组 数据类型  数组标识符[常量表达式] 二位数组 数据类型 数组标识符[常量表达式1][常量表达式2] 引用时 标识符[常量],下标从0开始,数组元素共引用时常量表达式的个数     a[3][4] 3行4列  a[0][0] a[0][1] a[0][2] a[0][3]

学习日记

五一耍了三天,自己的计划有泡汤,那种制止力哪里去了,不过我认真起来还有有废寝忘食的时候,不过希望这种时候多一点,回家妈妈告诉我,她给老师打电话了的,老师说了我的一些情况,不过我没有老师说的那么好,学习在班上算中等.我觉得还算不上吧!任重而道远吧. Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量