C语言第四讲,typedef 关键字,以及作用域

一丶typedef关键字

  在C语言中,有typedef 关键字,这个关键字的作用就是允许你为类型定义一个新的名字,也就是 起个别的名字

例如:

  

typedef unsigned int DWORD

那么以后,我们定义unsigned int 类型的变量的时候,这不用敲写 unsigned int 了.直接DWORD即可.

例如:

  

DWORD name = 0; 

一般常常用在 结构体的定义,和函数指针上.

例如:

  

typedef struct MyStruct
{
int a;
int b;
}MyIntStruct;  

那么新的类型就是  MyIntStruct ,而这个类型就免去了你每次定义的时候加关键字了.

例如:

  

int main
{
// struct MyStruct IS;
// 没定义前,要使用上面
MyIntStruct IS;
IS.a = 10;
return 0;
} 

二丶作用域

在C语言中,编写的代码有作用域的限制.

作用域是什么?

  简而言之,当我们定义变量的时候,这个变量的访问.要在一定区域内才能进行访问.

比如你在A函数定义变量a,在B函数定义变量b,那么B函数是不能使用a变量的.

例如:

  

#include <stdio.h>

void printfB()
{
int b = ;
printf("%d\r\n",b); } void printfA()
{
int a = ;
printf("%d\r\n",a);
}

  

其中上面是函数作用域,  也就是 {    } 块语句包含的.

代码块作用域:

  代码块作用域主要靠 { }来区分.

例如:

  

int main()
{ int a = 10;
{
int a = 11;
printf("%d",a); //块语句包围
}
printf("%d",a);
return 0;
} 

如果这样定义,则a不会重定义.且a = 11,在代码执行到 } 结束后.也不复存在了.

文件作用域:

  文件作用域就是代码外面定义的. 也就是说全局变量. 全局作用域,在当前文件的任何一个位置都可以访问的.

例如:

  

  

int a = 10;  //外面声明即可.
int main()
{
printf("%d",a);
return 0;
} 

  

C语言第四讲,typedef 关键字,以及作用域的更多相关文章

  1. C语言结构体及typedef关键字定义结构体别名和函数指针的应用

    结构体(struct)的初始化 struct autonlist { char *symbol; struct nlist nl[2]; struct autonlist *left, *right; ...

  2. C语言学习及应用笔记之五:C语言typedef关键字及其使用

    在C语言中有一个typedef关键字,其用来定义用户自定义类型.当然,并不是真的创造了一种数据类型,而是给已有的或者符合型的以及复杂的数据类型取一个我们自己更容易理解的别名.总之,可以使用typede ...

  3. 逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式

    逆向知识第十四讲,(C语言完结)结构体在汇编中的表现形式 一丶了解什么是结构体,以及计算结构体成员的对其值以及总大小(类也是这样算) 结构体的特性 1.结构体(struct)是由一系列具有相同类型或不 ...

  4. 转:C#精髓 第四讲 GridView 72般绝技

    说明:准备出一个系列,所谓精髓讲C#语言要点.这个系列没有先后顺序,不过尽量做到精.可能会不断增删整理,本系列最原始出处是csdn博客,谢谢关注. C#精髓 第四讲 GridView 72般绝技 作者 ...

  5. PE格式第四讲,数据目录表之导入表,以及IAT表

    PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...

  6. C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象

    C++反汇编第四讲,反汇编中识别继承关系,父类,子类,成员对象 讲解目录: 1.各类在内存中的表现形式   备注: 主要复习开发知识,和反汇编没有关系,但是是理解反汇编的前提.     2.子类继承父 ...

  7. python学习第四讲,python基础语法之判断语句,循环语句

    目录 python学习第四讲,python基础语法之判断语句,选择语句,循环语句 一丶判断语句 if 1.if 语法 2. if else 语法 3. if 进阶 if elif else 二丶运算符 ...

  8. C语言第十一讲,预处理命令.

    C语言第十一讲,预处理命令. 一丶预处理简介 什么是预处理,预处理就是预先处理. 我们知道,程序会经过编译,连接形成可执行文件 这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理.提前 ...

  9. C语言第十讲,枚举类型简单说明

    C语言第十讲,枚举类型简单说明 一丶C语言中的枚举类型(ENUM) 在我们实际工作中,或者编写代码中.我们有的时候会用固定的值.而且不是很多. 这个时候就可以使用枚举了.如果我们使用#define显然 ...

随机推荐

  1. c++模板笔记

    使用vc2015进行C++ 模板的学习实验和笔记 用简单示例学习了解STL template大部头理论书 讲解各种规则和各种规则例外的解决办法 集中精力在20%的规则中的阴暗角落而不是80%实践中要注 ...

  2. Android工具

    2018-09-27 安卓签名工具 AndroidKiller 比如包打好了,想替换一个图片,就用zip打开,替换图片,重新签名.

  3. 第三次spring会议

    昨天天所做之事: 我用C#用DelectText对行数进行了定义,刚开始写代码有点无从下手. 遇到的问题:刚开始用datagridView进行了文本的输入,但是它更适合EXCEL之类的数据计算不符合我 ...

  4. 居于H5的多文件、大文件、多线程上传解决方案

    文件上传在web应用中是比较常见的功能,前段时间做了一个多文件.大文件.多线程文件上传的功能,使用效果还不错,总结分享下. 一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件进行上传: 支 ...

  5. php SQL 防注入的一些经验

    产生原因 一方面自己没这方面的意识,有些数据没有经过严格的验证,然后直接拼接 SQL 去查询.导致漏洞产生,比如: $id = $_GET['id']; $sql = "SELECT nam ...

  6. MySQL--运维内参中的binlog_summary脚本

    #!/bin/bash ##===================================================## ## 脚本出自<MySQL运维内参> ##===== ...

  7. 如何减少SQL Server中的PREEMPTIVE_OS_WRITEFILEGATHER等待类型

    在数据库大小分配期间,我正在等待类型PREEMPTIVE_OS_WRITEFILEGATHER.昨天,我将数据库大小配置为供应商建议的值.我们需要将数据库大小设置为700GB,保留150 GB的日志文 ...

  8. Android开发 - 掌握ConstraintLayout(一)传统布局的问题

    在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面.随着 ...

  9. Python自动化编程-树莓派GPIO编程(二)

    树莓派我们编程一般都直接用高效的python,针对于GPIO编程,python也是有这一方面的库的,这里最有名也是最常用的就是RPI.GPIO了.这个库是专门为树莓派GPIO编程所设计的,利用它你可以 ...

  10. pyg 图片服务器中使用的nginx 编译位置

    ./nginx 启动