一、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. Pyecharts——Python高级可视化

    Pyecharts是百度开源的移植到Python上的可视化工具,里面方法调用起来像是标记性语言,因此代码的可读性很强,一目了然.下面是一个绘制散点图的例子: #%% import pyecharts. ...

  2. Ubuntu apt-cache命令查找可用软件包

    本文GoFace给大家讲解下在Ubuntu及相同包管理的linux系统下如何查找可用软件包.在Ubuntu上大家一般使用apt-get安装软件,如果想查找某一包软件仓库中是否有,并不是使用apt-ge ...

  3. ssh之秘钥登陆

    前提: 1. 秘钥的生成需要OpenSSL的支持, 需要自行进行安装 一. 新建用户 在root登陆状态中执行命令: useradd -m ssh-user # centosadduser ssh-u ...

  4. 一步步教你学会如何区域录制屏幕转换成gif图

    现在各种表情包都是gif图,包括很多可能比较短暂的操作步骤,录制gif图也要远比录制成视频要来的方便很多. 1. GIF文件通常比视频文件小,这使得它们在网络传输中更加高效,尤其是在带宽有限的情况下. ...

  5. 分析Java值传递与引用传递

    背景 今天在公司做需求的时候,突然遇到了这个问题,八股文背过,但是又记不大清楚了.索性写下来,方便我这笨蛋脑子下次看. 解释 理解这个问题在于看它的角度(强调.加粗) 那我们开始,Java中一切都是值 ...

  6. Javascript 标签的属性

    1.为HTML标签设置和添加属性 setAttribute() setAttribute()方法可以给HTML标签设置/添加属性(原生的属性或者自定义的属性都可以)添加的属性会存储在标签中 <! ...

  7. 前端必须知道的手机调试工具vConsole

    在日常业务中我相信大家多多少少都有移动端的项目,移动端的项目需要真机调试的很多东西看不到调试起来也比较麻烦,今天给大家分享一个我认为比较好用的调试第三方库VConsole ,有了这个库咱们就在手机上看 ...

  8. Modbus新手教程

    REDISANT 提供互联网与物联网开发测试套件 # 互联网与中间件: Redis Assistant ZooKeeper Assistant Kafka Assistant RocketMQ Ass ...

  9. Argocd基于网络的终端

    https://argo-cd.readthedocs.io/en/stable/operator-manual/web_based_terminal/ 官网参考:​ ​https://argo-cd ...

  10. apache install

    https://www.gnu.org/software/libtool/ ./configure --prefix=/usr/local/libtoolmakesudo make install h ...