C笔记---01基础篇

一、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的倍数的位置,使得后面的输入从此开始。

posted @ 2023-08-28 18:53  xioahuhu  阅读(11)  评论(0编辑  收藏  举报