码迷,mamicode.com
首页 > 编程语言 > 详细

C语言学习日记5

时间:2016-06-11 01:59:16      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

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

  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.宏名一般用大写

C语言学习日记5

标签:

原文地址:http://www.cnblogs.com/thorzhou/p/5573582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!