文章目录

  • 一、必须理解的几个概念
    • 1.变量的作用域和生命周期
      • (1)作用域:
      • (2)生命周期
    • 二、转义字符
      • (1)

        转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。
    • 三、常见的关键字
      • (1)关键字 typedef
      • (2)关键字static
        • ①修饰局部变量
        • ②static修饰全局变量
        • ③修饰函数:

一、必须理解的几个概念

1.变量的作用域和生命周期

(1)作用域:

作用域(scope)概念:一段程序代码中所用到的名字并不是总是有效的,限定这个名字的可用性的代码范围就是这个名字的作用域。

①局部变量的作用域是变量所在的局部范围。
②全局变量的作用域是整个工程
③局部变量与全局变量重名时,局部变量优先
举个例子:

#include<stdio.h>
int a = 10;
int Add(int z, int b)
{int a = 100;return a + b;
}
int main()
{int a = 3;int b = 4;printf("%d", Add(a, b));
}

代码结果如下:
可以看到尽管变量a有三次重复,优先选取局部,即在Add函数里面定义的变量a。
再举个例子:

#include<stdio.h>
int a = 10;
void test()
{int a = 3;a++;
}
int main()
{test();printf("%d", a);
}


在test函数里面优先使用局部变量a,出了test函数变量销毁,因此在main函数里头a还是全局变量的a,即a=10。

(2)生命周期

生命周期的概念:变量的生命周期指的是变量从创建到销毁的一个时间段。

①局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束。
②全局变量的生命周期:整个程序的生命周期。

二、转义字符

(1)

转义字符(Escape Character)是指在ASCII码和Unicode等字符集中的无法被键盘录入的字符、被当作特殊用途而需要转换回它原来的意义的字符。

ASCII编码中的转义字符对应意义如下:

比如下面这道笔试题:
请回答该段代码输出什么:

输出结果如下:

其中的\t,\62为转义字符,在字符串中只占据一个字节。

三、常见的关键字

(1)关键字 typedef

typedef 顾名思义,是用来重命名类型。 例子如下:

(2)关键字static

static用来修饰变量和函数:
①修饰局部变量-称为静态局部变量
②修饰全局变量-成为静态全局变量
③修饰函数-成为静态函数

①修饰局部变量

例子:分析下面两段代码
代码一:

#include <stdio.h>
void test()
{int i = 0;i++;printf("%d ", i);
}
int main()
{int i = 0;for (i = 0; i < 10; i++){test();}return 0;
}

运行结果如下:

可以看到由于test函数中的变量i出了函数作用域生命周期结束,自动销毁。
第二段代码:

#include <stdio.h>
void test()
{//static修饰局部变量static int i = 0;i++;printf("%d ", i);
}
int main()
{int i=0;for (i = 0; i < 10; i++){test();}return 0;
}

运行结果如下:

可以看出static改变了test函数中的i变量的生命周期,i即使出了函数作用域依旧存在,直到程序结束。(static将栈区的变量i放到了静态区中)

②static修饰全局变量

修饰前:

(其中使用外部源文件的全局变量需用extern声明)
用static修饰后:

即全局变量用static修饰后,变量只能在本源文件内使用,不能在其他源文件内使用。

③修饰函数:

修饰前:

(使用外部源文件的函数不需要用extern声明)
修饰后:
可以看到static修饰函数与修饰全局变量的效果如出一辙,事函数只能在本源文件内使用,不能在其他源文件内使用。

C语言基础的一些细枝末节相关推荐

  1. 【python语言基础】疑难点整理2

    [python语言基础]疑难点整理1 第五章 在python语法中,循环体中的语句没有做限制,因此,可以是任何合法语句,当然也可以是循环语句.这样就形成了循环语句的嵌套. while循环语句和for循 ...

  2. r语言 断轴 画图_R语言基础画图/绘图/作图

    R语言基础画图 R语言免费且开源,其强大和自由的画图功能,深受广大学生和可视化工作人员喜爱,这篇文章对如何使用R语言作基本的图形,如直方图,点图,饼状图以及箱线图进行简单介绍. 0 结构 每种图形构成 ...

  3. fig r函数_R语言基础绘图函数散点图~跟着Nature Communications学画图~Figure1

    今天继续 跟着Nature Communications学画图系列第二篇.学习R语言基础绘图函数画散点图. 对应的 Nature Communications 的论文是 Fecal pollution ...

  4. 学单片机需要多少C语言基础,C语言单片机编程教程

    很多学员和朋友经常找我给他们推荐C语言的书,他们可能想和我当年一样,闷头大干一场,学个几个月的C语言,把C语言吃透,再开始单片机程序开发! 别!别!别! 大家千万别这么干,我当年自学了3个月的C语言, ...

  5. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  6. c++把数组所有元素剔除_C语言基础之数组,第一节,C语言必学知识点剖析

    本文约1600字,主要讲了C语言基础之数组.数组又可分为数值数组.字符数组.指针数组.结构数组等各种类别.本文主要讲了数组的基础概念,一维数组的定义和引用. 带你进入C语言的世界,入门C语言,后边将持 ...

  7. matlab语言实验二,实验二 MATLAB语言基础

    实验二 MATLAB 语言基础 一.实验目的 基本掌握 MATLAB 向量.矩阵.数组的生成及其基本运算(区分数组运算和矩阵运算).常用的数学函数.了解字符串的操作. 二.实验内容 (1) 向量的生成 ...

  8. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  9. 实验四 数据库SQL语言基础编程

    -- 实验四 数据库SQL语言基础编程 -- 实验目的: --  掌握数据库查询语句的编写方法 --  掌握利用查询语言完成基本查询 --  掌握利用SQL语句完成数据的添加.删除.修改操作 -- 实 ...

最新文章

  1. 【组队学习】【33期】动手学数据分析
  2. Linux下双网卡绑定(bonding技术)
  3. Linux fork()一个进程内核态的变化
  4. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 3 TensorFlow Tutorial
  5. 隐藏键盘_三星新专利:带有隐藏键盘的三折叠屏手机
  6. 与高通公司合作的Cyanogen团队,Thunderbird等等
  7. 路由到另外一个页面_如何在多个页面中,引入一个公共组件
  8. python super()方法的作用_详解python的super()的作用和原理
  9. 医院各领域榜单。22个科室、100种常见疾病
  10. packet和frame区别
  11. SVG线条动画实现蚂蚁线
  12. STM32通过串口控制LED闪烁或者呼吸效果
  13. 不间断:即使被刺破,新的软电子设备也不会损坏
  14. 【爬虫】如何解决爬虫爬取图片时遇到百度安全验证的问题?即页面上没有显示图片的源地址,没有img标签,只有div标签
  15. 移动端开发的屏幕、图像、字体与布局的兼容适配
  16. matlab输出多个参数到表格固定列,matlab将excle的列提取出来?如何使用Matlab提取Excel中指定列的数据?...
  17. 【CSDN】CSDN图片居中
  18. 问题(ArcGIS):去除栅格不需要的Value(背景值0)
  19. PTA实验3-1 求一元二次方程的根 (20 分)
  20. php小数点后保留一位或两位小数

热门文章

  1. 满血复活~喵呜~喵~呜~
  2. 再厚的马赛克都能被扒干净?这款「去码」神器火了
  3. 密码打马赛克已经不安全了!这款开源的去 “马赛克” 工具一秒还原
  4. Android 自定义数字角标
  5. 如何禁用 Microsoft Edge 自动更新(Windows、macOS)
  6. 网件R6220刷机失败
  7. pyhton获取 中国各个省份/直辖市拥有的上市公司数目
  8. 华文行楷字帖欣赏_任政行书唐诗字帖欣赏:工整秀丽、雄健挺拔!初学书法的好字帖...
  9. Vue中使用百度地图做路径分析并根据起终点坐标模拟道路里程桩
  10. 给中年工程师的忠告 转自前辈工程师 “嵌入式玩家”