C语言——零基础入门手册(三分钟极简版)

本文目的

让你三分钟眼熟C语言所有关键知识,为之后详细学习C语言打下一个模糊的印象基础,在之后学习相关知识的时候可以感到不那么陌生,没有害怕心理。之后我还会写细节学习C语言的教程,各位敬请期待。

1、什么是C语言

  • C语言是人和计算机交流的一种计算机语言
  • 底层开发
    • 硬件和操作系统之间的驱动层开发
  • 编译器
    • vs2019、vs2022用的是msvc,GCC以后c++可以学

2、第一个C语言程序

  • 1、创建项目

    • 名称不要使用中文、特殊字符、空格
    • 自己设置路径
  • 2、创建.c文件

    • 不要写成.cpp,会自动识别成cplusplus的语法
  • 3、开始写代码

    • Ctrl+f5 编译、链接、运行
  • image.png

  • f10 调试,f11逐行调试

  • main函数

    • main函数是程序的入口
    • 程序是从main函数的第一行开始执行的
    • main函数有且仅有一个
  • printf是一个库函数,直接可以使用

  • “Hello World”是一个字符串,双引号引起来的是字符串

    扫描二维码关注公众号,回复: 15854642 查看本文章

3、数据类型

  • 数据类型
    • char 字符类型
    • short 短整型
    • int 整型
    • long 长整形
    • long long 更长的整型
    • float 单精度浮点数
    • double 双精度浮点数```
  • sizeof是一个操作符,是计算机类型/变量所占内存空间的大小
    • 单位是字节
  • %d是以十进制打印一个整数
  • 计算机中的单位
    • bit 比特
    • byte 字节
    • Kb
    • Mb
    • Gb
    • Tb
    • Pb
    • 一个比特位就是一个0/1,8个比特位是一个字节

4、变量、常量

4.1定义方法

  • 小数直接写出来编译器默认double类型,需要在数据后+f
    • 如:float weight = 55.5f

4.2命名:

  • 只能用字母开头(包括大小写)、数字和下划线组成
  • 不能以数字开头
  • 长度不能超过63个字符
  • 变量名区分大小写
  • 变量名不能使用关键字

4.3变量的分类

  • 局部变量
  • 全局变量(语法允许的情况下可以在任意情况下使用,甚至跨文件,不过需要声明)
  • 原则上变量名不要冲突
  • 如果全局变量和局部变量冲突,局部优先
  • & 取地址操作符
    • %c 字符
    • %d 整型
    • %s 字符串
    • %f float
    • %lf double
    • %p 地址的打印
  • 微软的编译器认为scanf不安全,建议使用scanf_s,但是这个只有微软编译器认识,无法跨平台,建议使用scanf。
    • 在newc++file.cpp中加上:
    • #define _CRT_SECURE_NO_WARNINGS 1
  • scanf、printf
    • 库函数、C语言直接提供的函数,直接可以使用
    • scanf是输入数据
    • printf是输出数据
    • 如:scanf(“%d”,&a);
    • 需要包含头文件stdio.h

4.4 变量的作用域和生命周期

  • 作用域
    • 局部变量的作用域在局部范围
    • 全局变量的作用域是整个工程(尽量少使用)
  • 生命周期
    • 局部变量生命周期:进入作用域开始,出作用域结束
    • 全局变量生命周期:整个程序的生命周期
    • 变量创建的本质:内存中开辟一块空间,存放数据
    • 销毁:把空间还给操作系统

4.5 常量

  • 字面常量
    • 字符串:“absfauobf”字符:‘a’等等
  • const修饰的常变量
    • 常变量:具有常属性,即不能被更改(相当于const起了限制作用),但本质仍是变量,即不能作为常量作用于某些函数。
  • #define定义的标识符常量
    • 直接定义一个标识符常量,这时就是一个完完全全的常量,可以定义字符,整型,等等
  • 枚举常量
    • 枚举:一一列举
    • 生活中有些值是可以一一列举的
      • 性别:男、女、保密
      • 三原色:red green blue
      • 等等……
    • 枚举的可能取值是给枚举类型赋值的

5. 字符串+转义字符+注释

5.1 字符串

  • 键盘能打出来的东西,就叫字符。
  • 两端加上单引号 ’ 来表示字符。以此与变量名作区分。
  • 字符串隐藏一个\0,\0是字符串的结束标志,print打印的时候遇到\0才会停止。
  • strlen是库函数,求字符串长度的,从给定的地址直到\0停止。(需包含<string.h>)

5.2转义字符

  • 转变原来的意思
  • 如:\n是换行,或\test.c 缩进,或?,',让?和 ’ 不被转换成别的符号等等
  • 重点:
    • 进制:数据的不同表示方式。
    • \ddd
      • ddd表示1~3个八进制数字,如:\130表示字符X
        • 编译逻辑:先把130转换成八进制的数字88,然后通过ASCLL码表转换成字符X
    • \xdd
      • dd表示2个16进制数字,如:\x30表示字符0
        • 编译逻辑同上

6.注释

  • 注释就是可以把代码无效化的符号,常用于解释说明代码
  • 以//开头的注释,属于C++注释风格。
  • /**/ 属于C语言的注释风格,不支持嵌套着注释

7. 选择语句

  • 现在有两条路
    • 好好学习
      • 未来拿到好offer,走上人生巅峰
    • 不好好学习
      • 路边卖烤串
  • if\else 语句

8.循环语句

  • while语句
  • for语句
  • do while语句

9.函数

  • 特点:简化代码,代码复用

10.数组

  • 定义:一组相同类型的元素集合
int arr[10]={
    
    1,2,3,4,5,6,7,8,9,10};
  • 下标:从零开始的
  • 数组可通过下标访问

11.操作符

  • 算术操作符
    • / 除法,表示商
    • % 取模,表示余数
    • 小数除法:至少保证有一个是小数
  • 移位操作符
  • 赋值操作符
  • 单目操作符
    • !反逻辑操作符
      • 负值
    • sizeof 操作符的类型长度(以字节为单位)
      • 括号可以去掉,但类型时不可以
    • –:前后置
    • ++:前后置
    • (类型)强制类型转换
* 关系操作符
	* >
	* >=
	* <
	* <=
	* != 测试不等于
	* == 测试等于
  • 逻辑操作符
    • &&与“并且”
    • ||或“或者”
  • 条件操作符
    • exp1?exp2:exp3
    • 是否满足1,满足运行2,不满足运行3
  • 逗号表达式
    • exp1,exp2,exp3,……
    • 执行出来的是最后一个表达式的结果
  • 下标引用、函数引用、结构成员
    • [] 下标引用操作符
    • () 函数调用操作符
    • 结构成员:. ->

12.常见关键字

关键字是自己预先设定好的,用户是自己不能创造的。

auto break case char const continue default do double else enum
extern float for goto if int long register return short signed
sizeof static struct switch typedef union unsigned void volatile while
  • 关键字分类
    image.png

12.1 typedef(类型定义)

  • 就是给类型重命名一下,将比较长的类型名起个别名

12.2static(修饰变量和函数)

  1. 修饰局部变量——静态局部变量
  2. 修饰全局变量——静态全局变量
  3. 修饰函数——静态函数

12.2.1 修饰局部变量

改变变量周期,让静态局部变量出了作用域仍然存在,到程序结束,生命周期才结束。

c/c++ 代码学习时,内存分为三个区域:

  1. 栈区
    1. 局部变量
    2. 形式参数
    3. 临时作用的变量
    4. 特点:进入作用域创建,出了作用域销毁(还给操作系统)
  2. 堆区
    1. 全局变量
    2. 静态变量
    3. 特点:创建好后,直到程序结束才摧毁
  3. 静态区
    1. 动态内存分配
    2. malloc
    3. calloc
    4. realloc
    5. free

局部变量原本存在于栈区,static把其存储到静态区。相当于改变了存储类型(位置),使得静态变量的生命周期变长。但是其仍是局部变量,无法在别的地方使用。

12.2.2修饰全局变量

将全局变量从尾部链接属性变成了内部链接属性,使其只能在源文件内部使用,不能在外部使用。
可以不和别人冲突。或不让别人使用

12.2.3修饰函数

把函数的作用域限制在本源文件内,让别的文件无法链接。

image.png

register建议放在寄存器中,但不是真的放进去,取决于编译器
后期可以读一下《深入理解计算机系统》

13. #define定义常量和宏

可以定义一个名字,把数字或者运算方法定义进去,之后直接使用即可。

14.指针

14.1 内存

  1. 一个内存单元多大比较合适?
    1. 一字节比较合适
  2. 地址或编号如何产生?
    1. 内存中分配的空间,编的号
  3. %p:专门用来打印地址,是以16进制的形式表示地址的
  4. 口头所说的指针一般是指针变量,而指针的定义是地址

14.2 指针变量的大小

32位平台下是32个bit位(4个字节)
64位平台下是64个bit位(8个字节)

15.结构体

  1. 创建:struct Stu{char name[20]}//20表示字符串,一个汉字两个字符
  2. 初始化用大括号
  3. 访问:
    1. “.”点操作符
      1. 形式:结构体变量. 成员
    2. ->操作符:
      1. 形式:结构指针->成员

写在最后

如果本文对您有帮助,可不可以给我一个小小的点赞呀❤~您的支持是我最大的动力。

博主小白一枚,才疏学浅,难免有所纰漏,欢迎大家讨论和提出问题,博主一定第一时间改正。

谢谢观看嘿嘿(๑•̀ㅂ•́)و✧~!

猜你喜欢

转载自blog.csdn.net/weixin_70218204/article/details/130933232