C语言基础知识总结大全(建议收藏)

article/2025/10/2 6:00:21

前言:C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!

1 算法结构

一、顺序结构、选择结构、循环结构;二、循环结构又分为while型、until型、for循环结构;程序流程图;

2 结构化程序设计方法:

(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。

3 数据类型:

常量:常量包括字面常量、直接常量和符号常量;

变量:C语言规定标志符只能由字母、数字和下划线三种字符组成,且第一个字符必须是字母或者下划线;必须压迫先定义后使用;每一个变量被定义以确定类型后,在编译时就能为其分配相应的存储单元;

整数类型:整数常量有十进制、八进制和十六进制;“%d”

整形变量:数据在内存中存放形式是以二进制形式存放;有int型、short int型和long int型,无符号整型变量的范围是-32768—32767,有符号型为0~65535.通常把long定义为32位,把short定义为16位,int可以是32位也可以为16位,这都主要取决于机器字长。

实型常量的表示方法:(1)十进制,0.0;(2)指数形式,123e3

实型变量:实数型数据在内存中的存放形式,一般在内存中占4个字节,分成整数部分和小数部分存放。实型变量分为float型、double型long double型。实型数据会存在舍入误差。

实型常量的类型:C编译系统将实型常量作为双精度来处理。

字符型数组:(一)字符常量:转义字符(\n——换行,\t——tab,\r——回车,\f——换页,\b——退格,\ddd——1到3位8进制的数代表的字符)
(二)字符变量:字符数据存储形式实际是以ASCII码存储。“%c”
字符串常量:双撇号括起来的一系列字符序列。
在这里插入图片描述

4 C的运算符有以下几种:

1、算术运算符(+ - * / %)结合方向自左向右
2、关系运算符(> < ==“”>= <= !=“”>
3、逻辑运算符(! && ||)
4、位运算符(<>> ~ | ^ &)
5、赋值运算符(=及符号扩展赋值运算符)
6、条件运算符(? : )
7、逗号运算符( , )
8、指针运算符(* &)
9、求字节运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符( . ->)
12、下标运算符([])
13、其他

5 控制语句:

完成一定的控制功能。
1、if()else
2、for()~
3、while()~
4、do~while()
5、continue
6、break
7、switch
8、goto
9、return

6 字符数据的输入输出:

1、putchar()输入字符变量
2、getchar()只能接受一个字符

格式输入输出:

1、printf(%d—整型,%c—字符型,%ld,%md,%o,%u,%s,%-m.nf,%e,%g)
2、scanf(格式控制,地址列表)在这里插入图片描述

数组

一维数组的定义:类型说明符 数组名【常量表达式】;先定义后引用;一维数组初始化时可以只对一部分元素初始化,在对全部数组元素初始化的时候可以部规定长度;但是若被定义的数组长度与提供的初始值不一样时,则数组长度不能省略。

二维数组的定义:类型说明符 数组名【常量表达式】【常量表达式】C语言中存放二维数组是先存放第一行的元素,紧接着是第二行,其实也是以一维的方式存放。如果初始化时能指定所有元素的初始值,第一维大小可以省略,但是第二维不能省略。

字符数组:定义和初始化跟数组差不多,只是需要加单引号。字符和字符串结束标志,C语言规定,以’\0’代表。

1、puts()将一个字符串输出到终端
2、gets()从终端输入一个字符串到字符数组,并且得到一个函数值。
3、strcat()链接两个字符数组中的字符串。
4、strcpy()字符串复制函数。
5、strcmp()比较字符串作用。
6、strlen()测试字符串长度的函数不包括“\0”
7、strlwr()将字符串中的大写字母转换为小写字母。
8、strupr()将字符串中的小写字母转换为大写字母。

函数

(1)一个源程序由多个函数组成。
(2)C程序的执行从main()函数开始;
(3)所有函数都是平行的;
(4)函数分类;可以分为标准和自定义,还可以分为有参函数和无参函数。

函数定义的一般形式:

(1)类型标志符 函数名()
{
声明部分
语句
}
(2)类型标志符 函数名(形式参数列表)
{
声明部分
语句
}

关于形参和实参的说明:

(1) 在定义函数中指定的形参,在未出现函数调用时,他们并不占用内存中的存储单元,只有发生调用时,才会分配内存。
(2) 实参可以是常量、变量或者表达式;有时传递的时地址;
(3) 在被定义中,形参必须指定类型;
(4) 实参与形参的类型应相同或赋值兼容;
(5) C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只有实参传递给形参,而不能由形参传递给实参。

函数的返回值:

希望通过函数调用使主调函数得到一个确定的值。
(1)函数的返回值是通过函数中的return语句获取的。
(2)函数值的类型;
(3)如果函数值的类型和return语句中表达式的值不一样,则以函数类型为准。
(4)如果调用函数中没有return语句,并不带回一个确定的用户需要的值,函数不是不带回值,而只是不带回有用的值,带回一个不确定的值。
(5)如不需要带回任何值,用void。

函数的调用:

调用方式1、函数语句;2、函数表达式;3、函数参数。

被调用的函数的声明:

一个函数调用另一个函数所具备的条件:

1、首先被调用的函数必须是已经存在的函数;
2、如果使用库函数,一般应该在本文件开头用#include命令将调用有关库函数时在所需要用到的信息“包含”到本文件中。.h文件是头文件所用的后缀。
3、如果使用用户自己定义的函数,而且该函数与使用它的函数在同一个文件中,一般还应该在主调函数中对被调用的函数做声明。
4、如果被调用的函数定义出现在主调函数之前可以不必声明。
5、如果已在所有函数定义之前,在函数的外部已做了函数声明,则在各个主调函数中不必多所调用的函数在做声明。
在这里插入图片描述

局部变量和全局变量:

(一)局部变量在一个函数内部定义的变量是内部变量,它只是在本函数范围内的有效,主函数也不能使用其它函数中定义的变量;不同函数中可以使用相同的名字的变量,他们代表不同的对象,互不干扰;形式参数也是局部变量;在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,这种复合句也可以称为“分程序”或“程序块”;

(二)全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。

变量的存储类别:

(变量值存储时间)动态存储方式,在程序运行期间进行分动态的分配存储空间的方式,静态存储方式是指在程序运行期间分配固定的存储空间的方式;存储空间分为程序区、静态存储区和动态存储区;全局变量全部放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中存放以下数据:

1、函数形式参数;

2、自动变量;

3、函数调用时的现场保护和返回地址;在C语言中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方式。

存储方式分为静态和动态存储类,具体包含有四种:自动的(auto),静态的(static),寄存器的(register),外部的(extern),如果不加以声明,就自认为是auto型就会自动分配存储空间属于动态存储方式。

Static声明局部变量是在函数调用结束后不消失而保留原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,就是上次函数调用结束时的值。其中需要说明的是在定义局部变量不赋初值的话,则静态局部变量编译时自动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不能引用它的。静态局部变量主要用在当初始化后,变量只是被引用而不改变其值。

Register变量是C语言中允许将局部变量的值放在CPU中的寄存器中需要时直接从寄存器中取出来参加运算,不必再到内存中提取,但是计算机系统中寄存器数量有限,不能任意定义任意多的存储器,局部静态变量不能定义为寄存器变量。

Extern声明外部变量,用以扩展外部变量的作用域。在一个文件中,如果定义之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量做外部变量声明。在多文件中,也可以采用extern声明的办法进行外部变量声明。有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。

Static来声明一个变量的作用有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序执行期间始终存在;一个是在对全局变量声明中,该变量的作用域仅限于本文件模块操作。

注意:这些方法同样适用于函数的声明


http://chatgpt.dhexx.cn/article/kUnEOY3y.shtml

相关文章

c语言基础知识点字母和含义,大学c语言必背基础知识_c语言基础知识大全

描述 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识 举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 );…

【C语言】C语言中基础操作符详细讲解

接着上次的C语言基础知识梳理&#xff0c;让我们来简单了解一下C语言里的操作符 目录 整数的二进制表示形式 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑运算符 条件操作符-三目操作符 下标引用、函数调用、结构成员访问操作符 隐式类型…

代理模式的理解?代理模式的应用场景?

说说你对代理模式的理解&#xff1f;应用场景&#xff1f; 一、是什么 代理模式&#xff08;Proxy Pattern&#xff09;是为一个对象提供一个代用品或占位符&#xff0c;以便控制对它的访问 代理模式的关键是&#xff0c;当客户不方便直接访问一个对象或者不满足需要时&…

设计模式 —— 代理模式

目录 一、代理模式的基本介绍 二、静态代理 三、动态代理 3.1 动态代理模式的基本介绍 四、Cglib 代理 4.1 Cglib 代理模式的基本介绍 五、几种常见的代理模式介绍— 几种变体 一、代理模式的基本介绍 代理模式&#xff1a;为一个对象提供一个替身&#xff0c;以控制对…

Spring:代理模式

一、概述 代理模式分为静态代理以及动态代理&#xff0c;属于23中设计模式之一。动态代理是SpringAop的底层。代理的概念如下图所示&#xff1a; 二、 静态代理 上图角色分析&#xff1a; 抽象角色&#xff1a;一般会使用接口或者抽象类来解决真是角色&#xff1a;被代理的角色…

什么是代理模式,如何写一个代理模式

什么是代理模式 代理模式分为静态代理模式&#xff0c;和动态代理模式&#xff0c;代理模式就是创建一个代理对象&#xff0c;由代理对象来接管原对象的引用,静态代理模式需要让代理类和被代理的类实现同一个接口&#xff0c;通过代理类中定义的构造方法将被代理的对象作为参数…

代理模式(Proxy)

代理模式介绍 代理模式:为一个对象提供一个替身&#xff0c;以控制对这个对象的访问。即通过代理对象访问目标对象好处是:可以在目标对象实现的基础上,增强额外的功能操作&#xff0c;即扩展目标对象的功能被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象代…

代理 模式

代理模式 Proxy Pattern 为其他对象提供一个代理以控制对这个对象的访问 可以详细控制访问某个&#xff08;某类&#xff09;对象的方法&#xff0c;在调用这个方法前做前置处理&#xff0c;调用这个方法后做后置处理。 静态代理 直接写死的代码的代理逻辑 动态代理 动态…

代理模式例子

1.概念 代理模式就是为某个对象提供一种代理&#xff0c;以控制对这个对象的访问。 2.涉及角色 抽象角色&#xff1a;声明真实对象和代理对象的共同接口&#xff1b; 代理角色&#xff1a;代理对象角色内部含有对真实对象的引用&#xff0c;从而可以操作真实对象&#xff…

代理模式的使用

一.代理模式 代理模式是java常用的设计模式。 代理的定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。 简单点说就是代理对象与实际对象都实现了相同的接口&#xff0c;我们可以通过代理对象来间接的访问实际对象&#xff0c;也因为这种间接性&#xff0c;我…

C++之代理模式

目录 模式思想 简介 组成 优点 代码实现 情景 如果不使用代理的话&#xff1a; 加代理的话&#xff1a; 结果 模式思想 简介 代理模式&#xff1a; 通过代理类&#xff0c;来控制实际对象的访问权限。 在某些情况下&#xff0c;一个对象不适合或者不能直接引用另…

代理模式与动态代理模式

原文地址&#xff1a;点击打开链接 1、代理模式 所谓代理&#xff0c;就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下&#xff0c;一个客户不想或者不能够直接引用一个对象&#xff0c;而代理对象可以在客户端和目标对象之前起到中介的作用。 代理模…

设计模式之代理模式(C++)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 一、代理模式是什么&#xff1f; 代理模式是一种结构型的软件设计模式&#xff0c;在不改变原代码前提下&#xff0c;提供一个代理…

动态代理模式详解

目录 &#xff08;一&#xff09;什么是动态代理模式 &#xff08;二&#xff09;动态代理模式入门案例 1.完成一个账户转账的功能 2. v1.0版本为转账添加一个事务 3.v2.0将事务从业务层和从持久层剥离 4.v3.0将事务使用动态代理完成 5.v3.0通过cglib实现代理模式 &…

三种代理模式详解

文章目录 二、代理模式&#xff08;Proxy Pattern&#xff09;1、常见的几种代理模式&#xff1a;2、静态代理3、JDK动态代理4、CGLib代理5、CGLib和JDK动态代理的区别 二、代理模式&#xff08;Proxy Pattern&#xff09; 根据B站狂神视频整理&#xff1a;https://www.bilibil…

Spring的代理模式

1、代理模式 为什么要学习代理模式&#xff1f; 因为这就是springAOP的底层&#xff01;【springAOP和springMVC】 代理模式的分类&#xff1a; 静态代理动态代理 1.1、静态代理 角色分析&#xff1a; 抽象角色&#xff1a;一般会使用接口或者抽象类来解决真实角色&…

代理模式(Proxy模式)详解

在有些情况下&#xff0c;一个客户不能或者不想直接访问另一个对象&#xff0c;这时需要找一个中介帮忙完成某项任务&#xff0c;这个中介就是代理对象。例如&#xff0c;购买火车票不一定要去火车站买&#xff0c;可以通过 12306 网站或者去火车票代售点买。又如找女朋友、找保…

代理模式的详细介绍

国庆期间闲来无事&#xff0c;写了一个简单的小程序&#xff0c;小程序名称叫做 IT藏经楼。目的是分享这些年自己积累的一些学习材料&#xff0c;方面大家查找使用&#xff0c;包括电子书、案例项目、学习视频、面试题和一些PPT模板。里面所有材料都免费分享。目前小程序中只发…

代理模式

代理模式 代理模式应用场景模式结构实现方式 代理模式 控制着对于原对象的访问&#xff0c; 并允许在将请求提交给对象前后进行一些处理。 优点&#xff1a; 在客户端与目标对象之间起到一个中介作用和保护目标对象的作用&#xff1b;代理对象可以扩展目标对象的功能&#x…

代理模式详解

1. 代理模式 代理模式是一种比较好理解的设计模式。简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问&#xff0c;这样就可以在不修改原目标对象的前提下&#xff0c;提供额外的功能操作&#xff0c;扩展目标对象的功能。 代理模式一半包含三种角色&#x…