当前位置:网站首页>C语言基础知识梳理总结:零基础入门请看这一篇
C语言基础知识梳理总结:零基础入门请看这一篇
2022-08-02 05:08:00 【南风fahaxiki】
C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!
很多零基础小伙伴都没有仔细整理过成员的基础知识,对C语言的学习还无从下手,下面分享一套学习资料给大家,包含有系统化的学习路线和视频教程,知识点内容讲解详细,非常适合准备入门的小伙伴,无偿分享,希望对大记得学习有所帮助!
戳这里领取:编程学习C/C++企鹅圈https://jq.qq.com/?_wv=1027&k=vLNylJeG
算法结构:
1、顺序结构、选择结构、循环结构;
2、循环结构又分为while型、do-while型、for循环结构;
3、程序流程图;
结构化程序设计方法:
1、自顶向下;
2、逐步细化;
3、模块化设计;
4、结构化编码。
数据类型:
常量:常量包括字面常量、直接常量和符号常量;
变量: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”
字符串常量:双撇号括起来的一系列字符序列。
C的运算符有以下几种:
1、算术运算符(+ - * / %)结合方向自左向右
2、关系运算符(> < == >= <= !=)
3、逻辑运算符(! && ||)
4、位运算符(<< >> ~ | ^ &)
5、赋值运算符(=及符号扩展赋值运算符)
6、条件运算符(? : )
7、逗号运算符( , )
8、指针运算符(* &)
9、求字节运算符(sizeof)
10、强制类型转换运算符((类型))
11、分量运算符( . ->)
12、下标运算符([])
13、其他
控制语句:
完成一定的控制功能。
1、if()~else~
2、for()~
3、while()~
4、do~while()
5、continue
6、break
7、switch
8、goto
9、return
字符数据的输入输出:
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、全局变量,在函数之外定义的变量称为外部变量,全局变量可以增加函数间数据联系的渠道,一般不再必要时不要使用,他在程序的全部执行过程中占用存储单元,是函数的通用性,使用全局变量会使程序的清晰性降低。还要注意若果同一源文件中,外部变量和局部变量同名,则在局部变量作用范围内,外部变量被“屏蔽”,不起任何作用。
变量的存储类别:
(变量值存储时间)动态存储方式,在程序运行期间进行分动态的分配存储空间的方式,静态存储方式是指在程序运行期间分配固定的存储空间的方式;存储空间分为程序区、静态存储区和动态存储区;全局变量全部放在静态存储区中,程序开始时分配空间,完毕时释放;动态存储区中存放以下数据:
1、函数形式参数;
2、自动变量;
3、函数调用时的现场保护和返回地址;
在C语言中每个变量和函数都有两个属性,是数据类型和数据存储类型,存储类别是数据在内存中存储的方式。
存储方式分为静态和动态存储类,具体包含有四种:
自动的(auto);
静态的(static);
寄存器的(register);
外部的(extern),
如果不加以声明,就自认为是auto型就会自动分配存储空间属于动态存储方式。
static声明局部变量是在函数调用结束后不消失而保留原值,即占用存储单元不释放,在下一次调用该函数时,该变量已有值,就是上次函数调用结束时的值。其中需要说明的是在定义局部变量不赋初值的话,则静态局部变量编译时自动赋值为0或者空字符,虽然静态局部变量在函数调用结束后仍然存在,但是其他函数不能引用它的。静态局部变量主要用在当初始化后,变量只是被引用而不改变其值。
register变量是C语言中允许将局部变量的值放在CPU中的寄存器中需要时直接从寄存器中取出来参加运算,不必再到内存中提取,但是计算机系统中寄存器数量有限,不能任意定义任意多的存储器,局部静态变量不能定义为寄存器变量。
extern声明外部变量,用以扩展外部变量的作用域。在一个文件中,如果定义之前的函数想引用该外部变量,则应该在引用之前用关键字extern对该变量做外部变量声明。在多文件中,也可以采用extern声明的办法进行外部变量声明。
有时希望某些局部变量只限于被本文件引用,而不能被其他文件引用,这时就可以采用在定义外部变量时外加一个static,这在程序模块化设计中加强了通用性。static来声明一个变量的作用有二个,一个是在声明对局部变量时。则为该变量分配的空间在整个程序执行期间始终存在;一个是在对全局变量声明中,该变量的作用域仅限于本文件模块操作。注意:这些方法同样适用于函数的声明。
指针:
指针是指向一片内存空间的地址,指针变量是变量,是存放一片内存空间首地址的变量,我们一般所说的指针都是指针变量。
很多小伙伴学习C语言都觉得指针是很头疼的一部分,那么现在福利来了,下方是C语言的全套免费基础学习教程,内容讲解通俗易懂,非常适合小白学习,教程资料中还包含有源码笔记、实战项目和电子书籍,节省学习成本的同时还能更加系统化的学习。
欢迎加入https://jq.qq.com/?_wv=1027&k=vLNylJeG
指针的定义及赋值:
类型说明 *变量名 列如 int *p;
区别 int *p=NULL 与 *p=NULL
int *p=NULL; //定义指针变量p,并且同时将p的值设置为0x00000000,不是把*p的值设置为0x0000000,这个过程叫做初始化
int *p;*p=NULL; //定义指针变量p,将*p的值设置为NILL,即给p所指向的内存赋值NULL,但是p所指的内存可能是非法的,编译可能会显示内存访问错误,那么做出如下修改,给它一块合法的内存。
int i=10;int *p=&i;*p=NULL; //这时i中的值由10变成了0,而p值本身没变,即内存地址没有改变
指针的大小:
int *P;sizeof(p); //指针的大小根据计算机的位数确定,32位机大小为4个字节,64位机大小为8个字节。
指针运算:
需要注意的是指针的类型,+1加的是一个指针类型的大小。
int a[10];int *p=&a; //+1,加了sizeof(int)*1个字节,而不是加sizeof(int[10])*1个字节
指针的使用类型
指针形式
数组形式:
int a[10];int *P=a;
p[0]=1; //指针的数组形式
*(p+1)=2; //指针的指针形式
通过指针修改内容的汇编过程:
1、找到指针变量的地址
2、通过指针变量的地址,找到内容的地址
3、通过地址找到内容
4、修改内容
边栏推荐
- 21天学习挑战赛安排
- 51单片机外设篇:红外通信
- PSQL function, predicate, CASE expression and set operations
- 去字节跳动自动化测试二面原题(根据录音整理)真实有效 26
- MySQL夺命10问,你能坚持到第几问?
- mysql实现按照自定义(指定顺序)排序
- 本周大新闻|苹果MR已进行Pre-EVT测试,Quest 2涨价100美元
- MySQL 8.0.29 decompressed version installation tutorial (valid for personal testing)
- ERROR 1045 (28000) Access denied for user ‘root‘@‘localhost‘解决方法
- Android studio connects to MySQL and completes simple login and registration functions
猜你喜欢
利用浏览器本地存储 实现记住用户名的功能
swinIR论文阅读笔记
51单片机外设篇:红外通信
Google notes cut hidden plug-in installation impression
100 latest software testing interview questions in 2022, summary of common interview questions and answers
Android studio连接MySQL并完成简单的登录注册功能
MySQL 8.0.29 设置和修改默认密码
ELK log analysis system
2021年软件测试面试题大全
nacos注册中心
随机推荐
Android studio连接MySQL并完成简单的登录注册功能
MySQL 5.7 upgrade to 8.0 detailed process
Use the browser's local storage to realize the function of remembering the user name
H5接入支付流程-微信支付&支付宝支付
复盘:图像饱和度计算公式和图像信噪(PSNR)比计算公式
面试测试工程师一般会问什么?测试主管告诉你
一线大厂软件测试流程(思维导图)详解
Detailed explanation of AMQP protocol
软件测试的需求人才越来越多,为什么大家还是不太愿意走软件测试的道路?
MySQL夺命10问,你能坚持到第几问?
What do interview test engineers usually ask?The test supervisor tells you
测试环境要多少?从成本与效率说起
MySQL 8.0.29 decompressed version installation tutorial (valid for personal testing)
The Go language learning notes - dealing with timeout - use the language from scratch from Context
100 latest software testing interview questions in 2022, summary of common interview questions and answers
Detailed installation and configuration of golang environment
Redis-----非关系数据库
MySQL 多表关联一对多查询实现取最新一条数据
MySql将一张表的数据copy到另一张表中
Android Studio 实现登录注册-源代码 (连接MySql数据库)