一、C语言内存分区

  • 1、程序代码区:存放 CPU 执行的机器指令。
  • 2、数据区

      2.1常量区:字符串、数字等常量存放在常量区,const修饰的全局变量存放在常量区;常量区的内存是只读的,程序结束后由系统释放。

  2.2全局区(静态区)又分为两个部分

  (a)全局初始化数据区 / 静态数据区(data段):程序中明确被初始化的全局变量、已经初始化的静态变量。

  (b)未初始化数据区(bss段):存入的是全局未初始化变量和未初始化静态变量,未初始化数据区的数据在程序开始执行之前被内核初始化为 0 或者空 ( NULL )。.bss段不占用可执行文件空间,其内容由操作系统初始化。

  • 3、栈区(stack):向下增长,由编译器自动分配释放 ,存放函数的参数值、局部变量的值等。
  • 4、堆区(heap) :向上增长,一般由程序员调用malloc、free函数分配释放, 若程序员不释放,程序结束时可能由操作系统回收 。

二、关键字

1.static关键字

  static修饰的变量:其存储类型为全局静态区,生命周期是整个程序,变量在程序的整个运行过程中不会被销毁,并且只初始化1次,但是作用域是和局部变量一样的,从定义开始,到最近的花括号结束。

static修饰函数:函数就被定义成为静态函数。静态函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。好处是:

(1)其他文件中可以定义相同名字的函数,不会发生冲突;

(2)静态函数不能被其他文件所用。

C语言中,static主要定义全局静态变量、局部静态变量、静态函数。

全局静态变量:

a.在全局区分配内存;

b.如果没有初始化,其默认值为0;

c.该变量在本文件内从定义开始到文件结束可见。

局部静态变量:

a.该变量在全局数据区分配内存;

b.它始终驻留在全局数据区,直到程序运行结束;

c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

定义静态函数:

a.静态函数只能在本源文件中使用;

b.在文件作用域中声明的inline函数默认为static类型。

2.const关键字

  const 修饰符用来告诉编译器,被修饰的内容具有“只读”的特点。如果我们在程序中试图修改 const 变量的值,编译器将给出错误提示。这样可以保护被修饰的东西,防止意外修改,增强程序的健壮性。

const 变量的值在给定以后不能改变,所以 const 变量必须被初始化。

三、格式符

  1. %d 十进制有符号型输出 (Decimal)

    ① %6d 整数输出,正号右对齐,宽度是6位,不足左边补空格

    ② %06d 整数输出,宽度是6位,不足左边补数字0

    ③ %-6d 整数输出,负号左对齐,宽度是6位,不足右边补空格。
  • %i:

    在 printf 格式串中使用时,与%d没有区别。

    在scanf格式中,%d 只与十进制形式的整数相匹配。而%i 则可以匹配八进制、十进制、十六进制。

四、转义字符

1、\t \r \n都是转义字符,空格就是单纯的空格,输入时可以输入空格;

2、\t 的意思是 :水平制表符,将当前位置移到下一个tab位置;

3、\r 的意思是: 回车,将当前位置移到本行的开头;

4、\n 的意思是:回车换行,将当前位置移到下一行的开头;

5、\f的意思是:换页,将当前位置移到下一页的开头。

\t :水平制表符。相当于TAB键,通常宽度相当于8个空格的位置。在双引号或定界符表示的字符串中有效,在单引号表示的字符串中无效。它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。

C笔记---01基础篇的更多相关文章

  1. (转)深度学习word2vec笔记之基础篇

    深度学习word2vec笔记之基础篇 声明: 1)该博文是多位博主以及多位文档资料的主人所无私奉献的论文资料整理的.具体引用的资料请看参考文献.具体的版本声明也参考原文献 2)本文仅供学术交流,非商用 ...

  2. 深度学习word2vec笔记之基础篇

    作者为falao_beiliu. 作者:杨超链接:http://www.zhihu.com/question/21661274/answer/19331979来源:知乎著作权归作者所有.商业转载请联系 ...

  3. Django学习笔记(基础篇)

    Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html

  4. Python学习笔记之基础篇(-)python介绍与安装

    Python学习笔记之基础篇(-)初识python Python的理念:崇尚优美.清晰.简单,是一个优秀并广泛使用的语言. python的历史: 1989年,为了打发圣诞节假期,作者Guido开始写P ...

  5. Sass-学习笔记【基础篇】

    最下边附结构图 在线编辑器网址如下:http://sassmeister.com/  注意编写的时候,符号千万别用了中文的:.:.....之类的,会报错,Sass也转换不成css. less和sass ...

  6. mysql学习笔记之基础篇

    数据库学习之基础篇 ① 开放数据库互连(Open Database Connectivity,ODBC ② 结构化查询语言(Structured Query Language) ③ 进入mysql:M ...

  7. PHP学习笔记01——基础语法

    <!DOCTYPE html> <html> <?php // 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建 $a ...

  8. Git学习笔记:基础篇

    git可以说是所有开发者出开发语言之外的最基本的基本功了,熟悉git可以方便的进行代码版本控制,以及与其他开发者进行合作开发.本文内容是我以往学习git时做的笔记,主要是关于git最基本的操作,但 只 ...

  9. CSS学习笔记(基础篇)

    CSS概念 CSS 指层叠样式表 (Cascading Style Sheets)(级联样式表) Css是用来美化html标签的,相当于页面化妆. 样式表书写位置: <head> < ...

  10. .net core 3.0 Signalr - 01 基础篇

    因为将signalr作为单独的站点,此处需要建立两个项目,一个专门用于signalr作为推送项目,一个客户端(实际的业务项目) ## 基础知识速览 ### Clients对象属性 | 属性 | 描述 ...

随机推荐

  1. 一文讲透 FPGA CDC 多bit跨时钟域同步-hand-shanking机制

    一.背景 数据的跨时钟域处理是FPGA开发过程中的常见问题,存在两种情况 慢时钟向快时钟同步:只需在快时钟域打两拍即可.其RTL如下: 打拍同步的原理:大家在初学FPGA时,经常听过FPGA中对信号打 ...

  2. ARC143E Reversi

    ARC143E Reversi 简单的分析题. 思路 如果分析一个节点状态,那么时不方便的.但可以注意到,状态的改变好相连的边数有关. 从叶子节点开始考虑. 白色:在父亲翻转前选中,并改变父亲状态. ...

  3. k8s之常用命令

    Minikube # 启动集群服务 minikube start # 查看集群服务状态 minikube status# 登录集群minikube ssh # 关闭,暂停,恢复,删除集群服务 mini ...

  4. VSCode关于编译scss的插件

    先安装两个插件,live server和 live sass compiler两个插件 然后将下面的代码复制到设置(文件---首选项----设置----打开设置json)中 "liveSas ...

  5. Golang之开源项目汇总

    汇总一些Golang一些开源项目,平常可以多学习一下源码与项目精髓 pocketbase 集成简单, 开箱即用,拥有简介的后台管理面板 该系统内置试试数据库与rest api, Google,gith ...

  6. 案例 | 某药企引进正也科技S2P系统 整合营销业务

    为了获取更大的市场空间,医药健康行业正迎来一波前所未有的产业升级.尽管不少企业取得了许多成绩,但仍面临诸多挑战. 天津某医药公司是集医药研发.药品生产.医药商业.大健康产业于一体的大型企业.敢为人先开 ...

  7. ESP32网页示波器+波形发生器

    项目开源地址:https://github.com/guohaomeng/ESP32WebScope ESP32WebScope 只用一块ESP32制作的ESP32网页示波器+波形发生器,可以拿来生成 ...

  8. AD使用插件生成交互式BOM

    AD使用插件生成交互式BOM 效果图镇楼: 下面来说一下怎么搞,过程其实也很简单,就加载一个脚本的事儿. 1.下载AD用交互式BOM插件 首先前往GitHub下载这位大佬开发的插件 地址:https: ...

  9. Nginx转发解析长域名多路径域名为一级域名

    ​Nginx解析短域名,例如:访问 http://192.168.1.23 可直接跳转到 http://192.168.1.23/webroot/decision server { listen 90 ...

  10. Python绘制七段数码管字母:从理论到实践

    在现代电子显示技术中,七段数码管是一种广泛应用的显示器件,常用于显示数字.字母和一些特殊符号.其基本原理是通过控制七个发光段(a, b, c, d, e, f, g)的亮灭来形成不同的显示内容.本文将 ...