C语言从入门到精通(第一期之结构框架)

简介: C语言从入门到精通(第一期之结构框架)

初识c语言



前言

欲戴皇冠,必承其重。

因为想构建一个C语言的详细知识框架,所以此篇是第一篇框架篇。(后期会不断更新)

由于笔者在学习C语言过程中碰过一道道的坎,跳过很多坑。为了及时巩固学过的知识和提高自己。在此以后把学习经验和知识点分享给大家。希望大家可以看到知识点和经验之谈,也能回忆起学过的知识,也能更好的提升自己。


庖丁解牛

对于正在学习C语言的朋友来说,我认为学C语言应该先了解其大概框架,然后再把框架慢慢分解为一个个小的目标,然后朝着这个目标一步一个脚印,慢慢实现C语言从入门到精通,否则在学习的过程很容易被劝退。

好记性不如烂笔头

在学习C语言的过程中,知识很多,说他碎吧,他也不碎。说他不碎,他也非常碎。但是只要我们经常总结,及时记笔记,构架一个知识框架,他就不碎。他就是一个完整的体系。这样我们就会在学习的过程中事半功倍。

最后, 多独立调试代码

遇见问题就要自己调试,多尝试几回,不仅会使你的印象深刻,而且调试成功后那种雀跃的感觉,只有你尝试了才知道!





什么是c语言


新人在刚接触c语言的时候对c语言一点都不了解。我们来举个例子,我们学习英语是把英语当做一种和外国人交流的东西。那么c语言就是我们和计算机交流的东西。毕竟计算机听不懂我们高级动物人所说的话。

c语言是一门面向过程的语言,不同于java等面向对象的语言

c语言是一门计算机语言,广泛用于底层开发。

几乎所有的操作系统都是用C语言编写的

几乎所有的计算机底层软件都是用C语言编写的

几乎所有的编辑器都是C语言编写的


第一个C语言程序

#include<stdio.h>

int main()

{

***** printf(“hello world”);

***** return 0;

}


下面我们分析一下这第一个程序

main函数是程序的入口

一个工程有且只有一个main函数

; 分号是语句的结束标志

输出内容是一个比较复杂的操作, 但系统提前定义好了一个专门用于输出内容的函数叫做printf函数,我们只需要执行系统定义好的printf函数就可以往屏幕上输出内容。用 函数名称+圆括号的形式来执行

return 0; 代表函数执行完之后返回整数0

{} 代表这个程序的范围

() 代表这是一个函数

int 代表函数执行之后会返回一个整数类型的值


数据类型


  • 为什么会有这么多的数据类型?
  • 存在这么多的类型,其实是为了更加丰富的表达生活中的各种值。
  • C语言中有4大类数据类型:基本类型、构造类型、指针类型、空类型
  • 下面先讲解一下基本类型


char 字符数据类型 1byte
short 短整型 2byte
int 整形 4byte
long 长整型 4byte
long long 更长的整形 8byte
float 单精度浮点数 4byte
double 双精度浮点数 8byte


一个变量所占用的存储空间,和***定义变量时声明的类型***以及***当前编译环境***有关,我们这说的是32位电脑


什么是注释


  • 代码中有不需要的代码可以直接删除,也可以注释掉
  • 代码中有些代码比较难懂,可以加一下注释文字
  • 注释有两种风格:
    C语言风格的注释 /xxxxxx/
    缺陷:不能嵌套注释
    C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行

字符串

  • 什么是字符串?
“hello world”
  • 这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简符串
  • 注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
    char arr1[] = "bit";
    char arr2[] = {'b', 'i', 't'};
    char arr3[] = {'b', 'i', 't', '\0'};
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0; 
}


字符串要以%s来输出。


转义字符

加入我们要在屏幕上打印一个目录: c:\code\test.c

我们该如何写代码?

#include <stdio.h>
int main()
{
 printf("c:\code\test.c\n");
    return 0; }


  • 实际运行结果如下
  • 是不是和你们想的大相庭径
  • 这里就不得不提一下转义字符了。转义字符顾名思义就是转变意思。
  • 下面看一些常用的转义字符。


\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\ddd ddd表示1~3个八进制的数字
\xdd dd表示2个十六进制数字
\n 换行
\t 水平制表符
\v 垂直制表符


所以说想输入一个斜杠,就必须输入两个斜杠,以此类推,后面的意思和这个相同。


常量、变量

什么是变量?什么是常量?

生活中的有些值是不变的(比如:圆周率,性别(?),身份证号码,血型等等)

有些值是可变的(比如:年龄,体重,薪资)。

不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

定义变量的方法

格式1: 变量类型 变量名称 ;

int age = 150;

float weight = 45.5f;

char ch = ‘w’;

为什么要定义变量?

任何变量在使用之前,必须先进行定义, 只有定义了变量才会分配存储空间, 才有空间存储数据

变量的分类

全局变量

局部变量

变量的使用


#include <stdio.h>
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0;
 }
  • 变量的作用域和生命周期
  • 作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用

    而限定这个名字的可用性的代码范围就是这个名字的作用域。
  • 局部变量的作用域是变量所在的局部范围。

全局变量的作用域是整个工程。

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

全局变量的生命周期是:整个程序的生命周期。


常量

有些同学会以为常量很简单,我在这里说一下,常量也分很多种。

C语言中的常量分为以下以下几种:

字面常量

const 修饰的常变量

#define 定义的标识符常量

枚举常量

这里我就不细细说明了,毕竟笔者也是初学者,等以后一个个模块慢慢说来。


选择语句


人生要面临很多的选择,比如高中生需要面临高考,选专业。而大学生要面临毕业是要找工作,还是去考研。

我在b站有个up那里听过这样的一段话,感受颇深

如果你好好学习,校招时拿一个好offer,走上人生巅峰。

如果你不学习,毕业等于失业,回家卖红薯。

这就是选择!

选择语句有两种

if语句

switch语句(后期更新)

if代码实例如下

#include <stdio.h>
int main()
{
    int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)
   {
       prinf("坚持,你会有好offer\n");
   }
    else
   {
       printf("放弃,回家卖红薯\n");
   }
    return 0;
 }


循环语句


我们生活中,或者说在成长中,时不时的都在循环过一件事。但也有循环终止的那个时刻。比如小孩在1岁喝奶粉,2岁也是,3岁也是,你一直在喝奶粉。但当有一天你四岁了,你就不喝奶粉了,你就终止这个循环了。

C语言中如何实现循环呢?

C语言一共有三种循环语句

while语句

for语句(后期讲)

do while(后期讲)

//while循环的实例
#include <stdio.h>
int main()
{
    printf("喝奶粉\n");
    int age = 0;
    while(age<=3)
   {
        age++;
        printf("喝奶粉\n");
   }
    if(age>3)
        printf("吃馒头\n");
    return 0;
  }


*当然,这就是最简单的循环语句了。


函数

光是听名字,就会有些人看见这两个字望而生畏。可能会联想起来我们数学学的函数,但是这个C语言的函数和我们数学中的函数还是大有不同的。

函数的基本概念

C源程序是由函数组成的


eg:我们前面学习的课程当中,main函数+scanf函数+printf函数+逻辑代码就可以组成一个C语言程序。


C语言不仅提供了极为丰富的库函数, 还允许用户建立自己定义的函数。用户可把自己的算法编写成一个个相对独立的函数,然后再需要的时候调用它 。


由于内容很多,我们今天就是初次认识一下C语言,在这里我就不娓娓道来了。后期再详细。


下面是一个详细的代码写成函数的例子。

#include <stdio.h>
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &a, &b);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0; }
上述代码,写成函数如下:
#include <stdio.h>
int Add(int x, int y) {
   int z = x+y;
   return z; }
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = Add(num1, num2);
    printf("sum = %d\n", sum);
    return 0;
 }


数组

  • 什么是数组?
  • 在C语言中,数组属于构造数据类型,简单的来说,就是用来存储一组数据。
  • C语言中给了数组的定义:一组相同类型元素的集合。
  • 数组的定义
      int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
  • 数组的下标(数组的易错点)
  • C语言规定数组的每个元素都有一个下标,下标是从0开始的。
    数组可以通过下标来访问的。下标是从0开始的。下标是从0开始的。重要的事情说三遍。
  • 数组的使用
#include <stdio.h>
int main()
{
 int i = 0;
 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
 for(i=0; i<10; i++)
 {
       printf("%d ", arr[i]);
 }
 printf("\n");
    return 0;
  }


操作符

  • 操作符分为一下几类。
  • 我们先来简单讲一个算数操作符。
  • 算术操作符
  • 移位操作符
  • 位操作符
  • 赋值操作符
  • 单目操作符
  • 关系操作符
  • 逻辑操作符
  • 条件操作符
  • 逗号表达式
算数操作符
+ 加法操作符
- 减法
* 乘法
/ 除法
% 求余操作符(也称为取模)


关键字

  • 常见关键字
  • 以下是经常看见的关键字,定义变量名不能使用关键字

  • 什么是关键字?
  • 关键字,也叫作保留字。是指一些被C语言赋予了特殊含义的单词
  • 关键字注意点:
    因为关键字在C语言中有特殊的含义, 所以不能用作变量名、函数名等
    C语言中一共有32个关键字


指针

结构体

  • 上面两个以后慢慢将来,内容比较多,也比较难。相信对于C语言初学者也有比较大的难度,所以分到以后我们慢慢介绍。


总结

  • 如果你觉得文章对你有一些帮助。点赞,收藏是对我最大的鼓励。






相关文章
|
3月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
81 2
|
11天前
|
存储 安全 C语言
【C语言程序设计——选择结构程序设计】预测你的身高(头歌实践教学平台习题)【合集】
分支的语句,这可能不是预期的行为,这种现象被称为“case穿透”,在某些特定情况下可以利用这一特性来简化代码,但在大多数情况下,需要谨慎使用。编写一个程序,该程序需输入个人数据,进而预测其成年后的身高。根据提示,在右侧编辑器补充代码,计算并输出最终预测的身高。分支下的语句,提示用户输入无效。常量的值必须是唯一的,且在同一个。语句的作用至关重要,如果遗漏。开始你的任务吧,祝你成功!,程序将会继续执行下一个。常量都不匹配,就会执行。来确保程序的正确性。
36 10
|
11天前
|
小程序 C语言
【C语言程序设计——基础】顺序结构程序设计(头歌实践教学平台习题)【合集】
目录 任务描述 相关知识 编程要求 测试说明 我的通关代码: 测试结果: 任务描述 相关知识 编程编写一个程序,从键盘输入3个变量的值,例如a=5,b=6,c=7,然后将3个变量的值进行交换,使得a=6,b=7,c=5。面积=sqrt(s(s−a)(s−b)(s−c)),s=(a+b+c)/2。使用输入函数获取半径,格式指示符与数据类型一致,实验一下,不一致会如何。根据提示,在右侧编辑器补充代码,计算并输出圆的周长和面积。
31 10
|
11天前
|
存储 编译器 C语言
【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】
本任务要求根据求根公式计算并输出一元二次方程的两个实根,精确到小数点后两位。若方程无实根,则输出提示信息。主要内容包括: - **任务描述**:使用求根公式计算一元二次方程的实根。 - **相关知识**:掌握 `sqrt()` 函数的基本使用方法,判断方程是否有实根。 - **编程要求**:根据输入的系数,计算并输出方程的根或提示无实根。 - **测试说明**:提供两组测试数据及预期输出,确保代码正确性。 - **通关代码**:包含完整的 C 语言代码示例,实现上述功能。 通过本任务,你将学会如何处理一元二次方程的求解问题,并熟悉 `sqrt()` 函数的使用。
24 5
|
11天前
|
存储 编译器 C语言
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
36 4
|
11天前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】按从小到大排序三个数(头歌实践教学平台习题)【合集】
本任务要求从键盘输入三个数,并按从小到大的顺序排序后输出。主要内容包括: - **任务描述**:实现三个数的排序并输出。 - **编程要求**:根据提示在编辑器中补充代码。 - **相关知识**: - 选择结构(if、if-else、switch) - 主要语句类型(条件语句) - 比较操作与交换操作 - **测试说明**:提供两组测试数据及预期输出。 - **通关代码**:完整代码示例。 - **测试结果**:展示测试通过的结果。 通过本任务,你将掌握基本的选择结构和排序算法的应用。祝你成功!
27 4
|
11天前
|
C语言
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
31 1
|
1月前
|
存储 NoSQL 编译器
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
103 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
11天前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】求阶跃函数的值(头歌实践教学平台习题)【合集】
本任务要求输入x的值,计算并输出特定阶跃函数的结果。主要内容包括: 1. **选择结构基本概念**:介绍if、if-else、switch语句。 2. **主要语句类型**:详细解释if、if-else、switch语句的使用方法。 3. **跃迁函数中变量的取值范围**:说明如何根据条件判断变量范围。 4. **计算阶跃函数的值**:通过示例展示如何根据给定条件计算函数值。 编程要求:在右侧编辑器Begin-End之间补充代码,实现阶跃函数的计算和输出。测试说明提供了多个输入及其预期输出,确保代码正确性。最后提供通关代码和测试结果,帮助理解整个过程。
22 0
|
11天前
|
存储 算法 安全
【C语言程序设计——选择结构程序设计】判断一个数是不是5和7的倍数(头歌实践教学平台习题)【合集】
本任务要求输入一个正整数,判断其是否同时是5和7的倍数,若是输出&quot;Yes&quot;,否则输出&quot;No&quot;。内容涵盖选择结构的基本概念、主要语句类型(if、if-else、switch)及条件判断逻辑,帮助理解编程中的分支执行与条件表达式。测试用例包括正数、负数及非倍数情况,确保代码逻辑严谨。通关代码示例如下: ```cpp #include &quot;stdio.h&quot; int main(){ int a; scanf(&quot;%d&quot;, &a); if (a &lt;= 0){ printf(&quo
30 0

热门文章

最新文章