零散知识点:

  • 变量        :C语言中,每个变量必须先定义后引用。所谓变量存在是指系统为这个变量分配一块存储空间,此时对变量的操作,就是对变量所对应的存储空间中存放的数据进行操作。人们将变量占据存储空间的时间称为变量的生存期,将变量可以引用的区域称为变量的作用域。变量的作用域依赖于变量定义的位置。
  • 全局变量:在函数外部定义的变量称为全局变量。全局变量的生命期是定义这个变量的程序文件,作用域是从定义处开始到程序文件的结束处为止。如果程序文件中的某些局部变量与之同名,则全局变量的作用域应该减去这部分区域。
  • 局部变量:在函数内部定义的变量,包括参数表中定义的形式参数被称为局部变量。局部变量的生存期和作用域是定义这些变量的函数。如果函数中出现与局部变量同名的块变量,局部变量的作用域将是减去块变量存在的区域,但它的生命周期并没有结束。(不同函数之间可以相同名字的变量)
  • 块变量    :在复合语句中定义的变量称为块变量。块变量的生命期仅为定义它的复合语句块。优点:可以提高存储空间的利用率。
  • 静态变量:变量在程序开始运行时系统就为其分配存储空间,等到程序结束时才将为其分配的所有存储空间回收。
  1. 格式: static 数据类型 变量名;
  2. 说明:
  • 全局变量都具有静态变量的性质
  • 在默认情况下,函数内部定义的变量属于自动变量
  • 定义为静态变量的变量,只有在首次使用的时候进行初始化,随后的调用不再进行初始化
  • 函数的形式参数必须是自动变量。因此在C语言中,不允许在定义形式参数时使用存储类别说明符
  • 具有自动(auto)存储类别的变量与函数共存亡;具有静态(static)存储类别的变量与程序共存亡。
  • 结构体   :是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。常借助于它将表示同一对象的不同属性封装在一起。

  1. 优点:可以提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。
  2. 结构体的变量称为“成员”,(在结构体中,“成员”可以属于任何一种数据类型)。其类型声明的语法格式:

struct <结构体类型名> {

<数据类型> <成员1>;

<数据类型> <成员2>;

……

<数据类型> <成员n>

};

  • 在C语言中,允许用户为已经存在的数据类型起一个别名,格式为:typedef 原数据类型名 新数据类型名;
  • 例如:typedef int INTEGER;
  • 优点:可以提高程序的清晰度、增加程序的可读性
  • 结合后:

typedef struct point_type {

Int x;

Int y;

}  POINT

POINT p1, p2

等价于:

struct point_type p1, p2;

等价于:

struct point_type{

Int x;

Int y;

} p1, p2;

  • 结构体类型变量的初始化:struct point_type p1 = {10,20};
  • 结构体类型变量的引用:p1.x;    p1.y
  • 结构体类型变量的输入:scanf(“%d%d”,&p1.x,&p1.y);
  • 结构体类型变量的输出:printf(“%d %d”,p1.x,p1.y);
  • 结构体类型变量的赋值:p1.x=6;    p1.y=8;
  • 结构体代码实例

功能描述:通过键盘输入30名学生的基本信息,并在上输出。然后,通过键盘输入一个月份和日期,查找并输出本年度在这个给定日期之后过生日的学生信息。

代码实例:

 #include<stdio.h>
#pragma warning(disable:4996)
#define NUM 20
typedef struct{
int year; /*年*/
int month; /*月*/
int day; /*日*/
} DATE; typedef struct{
int num; /*学号*/
char name[]; /*姓名*/
DATE birthday; /*出生日期*/
char department[]; /*所属院系*/
char major[]; /*主修专业*/
} STUDENTINFO;
void inputINFO(STUDENTINFO s[]);
void outINFO(STUDENTINFO s[]);
void searchInfo(STUDENTINFO s[], DATE date); main()
{
STUDENTINFO s[NUM];
DATE date;
inputINFO(s);
outINFO(s);
printf("\n Enter a date(month,day):\n");
scanf("%d%d", &date.month, &date.day);
searchInfo(s, date);
} void inputINFO(STUDENTINFO s[])
{
int i;
printf("Enter %d studennts information (name,birthday,department,major):\n", NUM);
for (i = ; i < NUM; i++){
s[i].num = i + ;
scanf("%s", s[i].name);
scanf("%d%d%d", &s[i].birthday.year, &s[i].birthday.month, &s[i].birthday.day);
scanf("%s", s[i].department);
scanf("%s", s[i].major);
putchar('\n');
}
} void outINFO(STUDENTINFO s[])
{
int i;
printf("\n Num Name Birthday Department Major\n");
for (i = ; i < NUM; i++){
printf("%4d %14s %4d/%2d/%2d %16s %16s",
s[i].num, s[i].name, s[i].birthday.year, s[i].birthday.month, s[i].birthday.day,
s[i].department, s[i].major);
putchar('\n');
}
} void searchInfo(STUDENTINFO s[], DATE date)
{
int i;
for (i = ; i < NUM; i++){
if (s[i].birthday.month>date.month){
printf("\n%4d %16s %2d/%2d", s[i].num,s[i].name, s[i].birthday.month,
s[i].birthday.day);
continue;
}
if (s[i].birthday.month == date.month && s[i].birthday.day>date.day){
printf("\n%4d %16s %2d/%2d", s[i].num, s[i].name, s[i].birthday.month,
s[i].birthday.day);
}
}
}

本博客内容为原创,版权所有违者必究,转载请注明来源 http://www.cnblogs.com/sunshine-blog/

c语言程序设计案例教程(第2版)笔记(三)—变量、结构体的更多相关文章

  1. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

  2. c语言程序设计案例教程(第2版)笔记(二)—函数、递归

    零散知识点 模块化:将一个问题分解成若干个子问题的过程成为模块化. 模块化的优点:不但可以将一个复杂的问题分解成几个相对简单的问题:还可以提高程序代码的重用性. 函数:函数是构成C程序的基本单位.函数 ...

  3. c语言程序设计案例教程(第2版)笔记(六)—字符串处理实例

    字符串处理 功能描述:从键盘输入一个文本行后,为用户提供菜单选择,实现字符串一些操作——显示文本行.查找并替换指定子串.删除指定子串.统计指定子串数目. 实现代码: #include<stdio ...

  4. c语言程序设计案例教程(第2版)笔记(五)-软件开发基础知识

    零散知识点: 软件的主要特征 软件是一种逻辑产品,而不是有型的物质: 软件需要设计.开发,但不是传统意义上的产品制造: 软件不会磨损,但软件需要维护,即:修改代码或增加模块: 虽然软件行业正在向基于组 ...

  5. c语言程序设计案例教程(第2版)笔记(一)—零散、输入输出、最小公倍数、选择排序、冒泡排序

    零散知识点: 非格式化输入输出:getchar().putchar() 格式化输入输出   :scanf().printf() 字符串输入输出   :gets() 或 scanf().puts() 或 ...

  6. Just oj 2018 C语言程序设计竞赛(高级组)F:Star(结构体排序+最小生成树)

    F: Star Time Limit: 1 s      Memory Limit: 128 MB Submit My Status Problem Description 31世纪,人类世界的科技已 ...

  7. Go语言学习笔记十: 结构体

    Go语言学习笔记十: 结构体 Go语言的结构体语法和C语言类似.而结构体这个概念就类似高级语言Java中的类. 结构体定义 结构体有两个关键字type和struct,中间夹着一个结构体名称.大括号里面 ...

  8. 0031 Java学习笔记-梁勇著《Java语言程序设计-基础篇 第十版》英语单词

    第01章 计算机.程序和Java概述 CPU(Central Processing Unit) * 中央处理器 Control Unit * 控制单元 arithmetic/logic unit /ə ...

  9. C语言学习书籍推荐《C语言程序设计 现代方法(第2版)》下载

    下载地址:点我 C语言仍然是计算机领域的通用语言之一,但现在的C语言已经和当初的时候大不相同了.本书主要的一个目的就是通过一种“现代方法”来介绍C语言,书中强调标准C,强调软件工程,不再强调“手工优化 ...

随机推荐

  1. Java中的重写

    以下内容引用自http://wiki.jikexueyuan.com/project/java/overriding.html: 如果一个类从它的父类继承了一个方法,如果这个方法没有被标记为final ...

  2. Swift初体验之HelloWord+苹果Swift编程语言新手教程【中文版】

    AppDelegate.swift : <span style="font-size:24px;"><strong>// // AppDelegate.sw ...

  3. 如何利用Fluxion诱惑目标用户获取WPA密码

      前言 由于ISP替代了易受攻击的路由器,供渗透测试人员选择的诸如Reaver这样的工具越来越少,对于特定的目标,哪些工具有用与否能够确定的也很少.而如果采用暴力破解WPA密码,可能会需要大量的时间 ...

  4. JAVA数组去除重复数据

    一.用List集合实现   , , , , , , ,}; List<Integer> list = new ArrayList<Integer>(); ; i<str. ...

  5. B-Tree 索引和 Hash 索引的对照

    对于 B-tree 和 hash 数据结构的理解可以有助于预測不同存储引擎下使用不同索引的查询性能的差异.尤其是那些同意你选择 B-tree 或者 hash 索引的内存存储引擎. B-Tree 索引的 ...

  6. 关于rman duplicate 一些比較重要的知识点--系列三

    FYI: http://docs.oracle.com/cd/E11882_01/backup.112/e10643/rcmsynta020.htm#RCMRF126 rman duplicate d ...

  7. C语言-- static 全局使用示例

    C语言-- static 全局使用示例  前言:看到很多使用Objective-C开发IOS的大牛,有时候会使用static全局变量,相比之下,我却很少用这个,从而很少对其有着比较有实质意义的理解,甚 ...

  8. Kemans算法及其Python 实现

    算法优缺点: 优点:容易实现缺点:可能收敛到局部最小值,在大规模数据集上收敛较慢使用数据类型:数值型数据 算法思想 k-means算法实际上就是通过计算不同样本间的距离来判断他们的相近关系的,相近的就 ...

  9. 【iOS系列】-UIScrollView的介绍及结合UIPageControl实现图片播放的实例

    [iOS系列]-UIScrollView的介绍及结合UIPageControl实现图片播放的实例 第一:UIScrollView的常用属性 //表示UIScrollView内容的尺寸,滚动范围 @pr ...

  10. JavaScript学习14:表单处理

    什么是表单? 在HTML中,表单是由<form>元素来表示的.而在JavaScript中,表单相应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLEl ...