函数的作用:可以实现代码的重用. 函数只需要定义1次,那么函数中的代码就可以随意的调用.       -某不知出处的基本概念

  学而时习之,如有误笔,请指正

一、goto跳转语句

  goto在C语言的作用: 可以将CPU的执行跳转到当前函数的别的地方继续执行.因为会产生代码回朔,所以极易产生死循环。

  注意:

1). 标签名随意,但是要符合标识符的命名规则及规范.

标识符: 那就是程序员可以自己给名字的东西 统称为标识符.

变量名、标签名、函数名.

2). goto可以往前跳 也可以往后跳.

3). 只能在当前函数中跳.

4). 取标签名下面的那一句代码不能是声明变量.

如果你非要做的话 就写1句没有效果的代码.

  实例如下:

loop:
printf("");
int userName = , password = ;
printf("用户名: ");
scanf("%d",&userName);
printf("密 码: ");
scanf("%d",&password); //如果是错误的.
if(userName != || password != )
{
goto loop;
}

  二、全局变量和局部变量

1. 变量: 在内存中用来存储数据开辟的那块空间.

局部变量:定义在函数内部的变量,我们就叫做局部变量.

  全局变量:定在函数外部的变量.我们就叫做全局变量.直接定义在源文件下面.

2. 全局变量和局部变量的异同点.

相同点: 都是变量,都是在内存中开辟一块空间来存储数据.

不同点:

1). 声明的位置不同. 局部变量声明在函数内部,而全局变量声明在函数的外面.

2). 作用域不同.

a. 局部变量.只能在当前函数的内部访问.

b. 全局变量.从定义这个全局变量的地方开始,后面的所有的函数中都可以访问这个全局变量.

一般情况下.全局变量都是定义在最顶上的.#include下面.

3). 默认值不同.

a. 局部变量.

声明1个局部变量,如果没有为这个局部变量赋初始值.那么这个局部变量中有值, 值是1个垃圾数.是个随机数.

b. 全局变量.

声明1个全局变量,如果没有为这个全局变量赋初始值,那么这个全局变量的初始值默认就是0 会自动初始化为0

如果全局变量的类型是char类型,并且我们也没有初始化.那么系统就会自动的这个char变量赋值1个 '\0'

'\0' 代表1个不可见的字符. 这个字符的ASCII码就是0

4). 创建和回收的时间不同.

a. 局部变量.

CPU执行声明局部变量的那句话的时候,才会在内存中声明.

当作用域结束以后 就会自动回收.

b. 全局变量.

程序一启动 就在内存中创建全局变量.

程序结束的时候,全局变量才会被回收.

3. 全局变量的特点.

1). 程序一启动就会创建,直到程序结束的时候才会被回收.

局部变量.每次调用函数都会重新声明1个.函数结束的时候局部变量就回收.

无论在那个函数中 访问全局变量.访问的都是同1个.

具备共享性. 将数据声明为全局变量.那么所有的函数都能访问,都可以共享这个数据.

2). 什么时候我们需要把1个数据定义为全局变量呢?

如果这个数据想要被多个的函数访问.那么就可以将这个数据定义为全局变量.

4. 函数如果不被调用,函数内部的代码是不会执行的.

5. 可以定义1个和全局变量名称相同的局部变量.

这个时候,在函数内部从定义同名局部变量开始后面访问这个 变量. 访问的是局部变量.

  不建议这么写~

  三、预编译

1. 预处理指令/预处理代码.

C语言的代码主要分为两类.

1). C代码.

2). 预处理代码.

以#开头的代码就叫做预处理代码.

2. 手写第1个C程序的步骤.

1). 在.c的源文件中写上符合C语言规范的源代码.

2). 编译. 使用cc -c 指令将C语言的源代码编译为.o的目标文件.

a. 先检查源文件中的代码是否符合语法规范

YES: 生成目标文件.

NO:  报错.

3). 链接: 使用cc 指令 将目标文件链接生成1个可执行文件.

a. 为目标文件添加启动代码.

4). 执行可执行文件.

----->  这都是编译器在编译的时候做的事情 <-------------

.c源文件 --> 执行.c文件中的预处理代码 --> 检查语法 --> 编译成.o目标文件 --> 链接生成可执行文件 --> 执行.

3. 预处理指令

1). 预处理指令的分类.

a.  文件包含指令. #include

b.  宏定义       #define

c.  条件编译指令  #if

2). 预处理指令的特点.

a. 都是以#号开头.

b. 预处理指令的后面没有分号.

c. 在编译的时候,检查语法之前.

C语言的傻瓜式随笔(二):全局变量、预编译、goto的更多相关文章

  1. C语言的傻瓜式随笔(一):嵌套循环-程序结构

    循环语句的嵌套 一个循环结构内可以含有另一个循环,称为循环嵌套,又称多重循环.常用的循环嵌套是二重循环,外层循环称为外循环,内层循环称为内循环. ---------不知道哪来的基础概念 这是本宝宝的第 ...

  2. JavaScript作用域原理(二)——预编译

    JavaScript是一种脚本语言, 它的执行过程, 是一种翻译执行的过程.并且JavaScript是有预编译过程的,在执行每一段脚本代码之前, 都会首先处理var关键字和function定义式(函数 ...

  3. .NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二)

    原文:.NetCore微服务Surging新手傻瓜式 入门教程 学习日志---结构简介(二) 先上项目解决方案图: 以上可以看出项目结构可以划分为4大块,1是surging的核心底层,2,3,4都可以 ...

  4. [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐

    [翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...

  5. ES6新特性之傻瓜式说明

    ES6出来挺长一段时间了,但目前网上好像教程并不多也不详细.我依然遵循傻瓜式教学模式,白话文说明JavaScript和ES6的一些区别,说明下ES6的一些新特性.本文适合新手学习,大神请勿见笑,在下在 ...

  6. 在线App开发平台——应用之星傻瓜式开发平台

    随着智能手机及APP应用程序的普及,越来越多的企业和个人意识到APP的营销价值,出于对技术的敬畏,很多企业下意识认为开发APP是一个有难度的技术活,所以很多时候有心无力,也担心APP的后续的技术支持. ...

  7. 如何使用win7自带的备份还原以及创建系统镜像------傻瓜式教程

    对于经常鼓捣电脑的童鞋来说,装系统是一件极其平常的事情,不过系统装多了之后,我们会感到比较烦躁,因为每一次装系统意味着驱动的重新安装,程序的重新安装,每次这么鼓捣几次,半天时间就花在这上面了,效率是在 ...

  8. 【简单易用的傻瓜式图标设计工具】Logoist 3.1 for Mac

    [简介] Logoist 是一款Mac上强大易用的傻瓜式图标设计制作工具,通过使用内置模板和预设效果,您可以立即创建高质量的图形内容和艺术作品.通过使用该应用程序,可用于制作图标LOGO. 一款用于创 ...

  9. Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)

    一.应用名称 Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input) 二.应用图标 三.应用说明 现在通行的阿拉伯语键盘布局并无规律可循,阿拉伯语使用者需要花费较多时间 ...

随机推荐

  1. 解决一则enq: TX – row lock contention的性能故障

    上周二早上,收到项目组的一封邮件: 早上联代以下时间点用户有反馈EDI导入"假死",我们跟踪了EDI导入服务,服务是正常在跑,可能是处理的慢所以用户感觉是"假死" ...

  2. vmware 中ubuntu客户机 安装vmware tool vmhgfs 共享文件夹失败处理

    vmware版本:10.0.0 build-1295980 ubuntu版本:3.13.0-62-generic 先安装的vmware workstation自带光盘中vmare tools包,安装完 ...

  3. 定时脚本: 删除HDFS中的过期文件

    1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...

  4. BeautifulSoup研究一

    BeautifulSoup的文档见 https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/ 其中.contents 会将换行也记录为一个子节 ...

  5. Domino----The Address Book does not contain a cross certificate capable of validating the public key.

    The Address Book does not contain a cross certificate capable of validating the public key. 地址本不包含交叉 ...

  6. 深入理解Java的接口和抽象类(转)

    深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的 ...

  7. web 前端- 表格字段(文件大小)单位格式化算法

                     if (value === 0) return '0 B';   var k = 1024, // or 1000   sizes = ['B', 'KB', 'MB ...

  8. iOS 为键盘添加隐藏按钮

    // 为键盘添加隐藏按钮 UIToolbar * backView = [[UIToolbar alloc]initWithFrame:CGRectMake(, , , )]; [backView s ...

  9. [转]svn 回退/更新/取消至某个版本命令详解

    1. 取消Add/Delete 取消文件 svn revert 文件名 取消目录 svn revert --depth=infinity 目录名 2. 回退版本 方法1: 用svn merge 1) ...

  10. [题解+总结]NOIP2010-2015后四题汇总

    1.前言 正式开始的第一周的任务--把NOIP2010至NOIP2015的所有D1/2的T2/3写出暴力.共22题. 暴力顾名思义,用简单粗暴的方式解题,不以正常的思路思考.能够较好的保证正确性,但是 ...