零散知识点:

  • 变量        :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. Atom安装代码格式化插件atom-beautify

    官网:https://github.com/Glavin001/atom-beautify 效果: 使用: [cmd]-[shift]-[p]或者[ctrl]-[shift]-[p]

  2. cors跨域深刻理解

    1.跨域问题只出现在前端和后端不在同一个主机上.前后端在同一个主机上不会出现跨域问题. 2.浏览器的一种自我保护机制,不允许出现本地浏览器ajax异步请求访问127.0.0.1以外的系统,因为浏览器不 ...

  3. FDMemTable的详细使用方法

    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Var ...

  4. 2016.3.15__H5页面实战__第七天

    假设您认为这篇文章还不错,能够去H5专题介绍中查看很多其它相关文章. 个人简书地址: dhttp://www.jianshu.com/users/5a2fd0b8fb30/latest_article ...

  5. 自动填充输入框 Asp .Net Mvc

    1 效果 当在一个文本框中输入时,可以自动查找相关选项,然后加载出来以供参考   2 前台代码   <link href="~/Content/themes/base/jquery-u ...

  6. c语言实现输出一个数的每一位

    比方输入1234.在屏幕上打印出1 2 3 4 代码展示: 方法一: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #includ ...

  7. Java 文件路径的读取

    记得在操作系统中了解到文件读取有两种方式,当然这在各编程语言中也是通用的,所以java路径也分,相对和绝对路径. 绝对路径 绝对路径URI ,听着和URL非常相似.那我们就来看看吧. URI(Unif ...

  8. oracle的日期蛋

    一切都是扯鸡巴蛋. 在网上查oracle的日期函数用法,得到一大堆语法,林林总总,都是扯鸡巴蛋,没能解决我的问题. 其实,我想写这么一条语句:查找某个日期(不含时分秒)产生或有关的记录.咋写? SQL ...

  9. Lightoj 1010 - Knights in Chessboard

    1010 - Knights in Chessboard    PDF (English) Statistics Forum Time Limit: 1 second(s) Memory Limit: ...

  10. spring各个jar作用

    spring.jar --->包含完整发布模块的单个jar,但是不包括mock.jar,aspects.jar,spring-porltet.jar,spring-hibernate2.jar ...