当前位置:网站首页>大学C语言入门到底怎么学才可以走捷径
大学C语言入门到底怎么学才可以走捷径
2022-07-06 09:03:00 【大方老师嵌入式】
大学C语言入门到底怎么学才可以走捷径
学习方法
C语言是计算机体系结构的基础,很多新人将C语言作为学习计算机的入门语言。作为新入门的新人,肯定会感到迷茫,很混乱,这时我们就需要适当的引导。对于一门语言的学习,不同的人有不同的方法,不过别人好的学习方法我们是可以拿来借鉴参考的。
(1)看书
看书就是学习基础知识,学习一门语言首先就是学习基本语法,学会了基础知识才能有更加深入的发展。除了看一些书籍之外,还可以看一些教学视频入门,毕竟别人讲解演示学起来更加轻松一点。后文我也会推荐一些好的学习书籍和视频,供大家参考学习。
(2)敲代码
想要学习好一门计算机语言,光看书籍学习知识点是远远不够的。在学习知识点的同时一定要自己敲代码进行练习。开始学习敲代码的时候可以用一些轻便的编译器,比如Dev C++,熟练了之后可以使用Visual Studio这些较为大型的编译器。感觉基础知识掌握熟练之后,就可以开始接触算法和数据结构之类的,再然后就可以刷题提高水平了。
(3)练习项目
学习完基础知识我们的目的还是实践,所以我们就可以开始练习一些项目了。比如写一个小的记事本、小游戏、计算器等经典的小项目。平时面对那些黑框框肯定会感觉到很枯燥无聊,当你做出一个小作品之后,你就会很有成就感,这也会极大的提升你的学习兴趣。
学习路线
学习一门语言先了解此语言的发展史,早期的C语言功能其实较为简单,随着应用和场景的变化,C语言的功能在不断升级变化,功能也越来越强大。正式学习C语言之前了解一下计算机系统的组成以及工作原理也是很有必要的,除此之外还包括数据在计算机内部的存储方式,以及进制之间的转换。
另外很重要的一点就是编译环境和编译器的学习,学习之初可以选择一些简单易上手的编译器,随着不断深入学习选择一个与时俱进的编译器也是很重要的。学习完这些内容之后,我们就可以开始学习C语言基础知识了。C语言编程离不开数据,几乎所有的程序中都会涉及到数据,其中包含整型、浮点型、字符串等等。而C语言中存在着两种表征数据的形式:常量和变量。常量可以用来表示数据的值,变量不仅可以用来表示数据的值,还可以用来存放数据。变量是用来存放数据,运算符则是用来处理数据。用运算符将变量和常量连接起来的符合C语言语法规则的式子称为表达式。
学习完这些之后,就开始接触结构化程序设计语句。C语言基本控制结构有三种,分别是顺序控制、循环控制、选择控制。程序总是为解决某个实际问题而设计的,而问题往往包含多个方面,不同的情况需要有不同的处理,所以这些结构化程序语句在实际应用程序中可以说是无处不在,正确掌握结构化程序设计语句显得尤为重要。
如果用基本数据类型来定义某些变量,那么这些变量在内存中将占用各自的内存单元,变量之间的制约关系无法体现,不能表现出这些变量之间的关联性,所以我们把这些变量称为“离散变量”;但是如果我们需要操作100个或者是更多的数呢,定义100个变量就显得不太现实,这时我们就引入了数组。数组是一组同类型的数据项的有序集合,我们就可以把100个要定义的变量存放到数组中。
学习指针是学习C语言最重要的一环,能否正确地理解和使用指针是掌握C语言的一个标志,可以说不懂C语言的指针就不懂什么是C语言。指针也是C语言中最难学的一部分,学习时除了要正确理解基本概念,还必须要多编程,多上机敲代码,只要做到这些,指针也是不难掌握的。
前面介绍的都是简单的数据类型,只能定义一些简单的数据信息。对于复杂的数据信息是无法用前面所学的某个单一数据来定义的,必须使用C语言中提供的复杂数据类型来定义。复杂数据类型是C语言提供的不同于简单数据类型的又一数据类型,它极大地丰富了C语言对数据信息的处理能力。
C语言基础
第一部分是C语言基础,包括预处理指令、函数、变量和语句。即使是编写最简单的C语言程序,也是会用到这些基本概念。用一个经典的c语言程序,介绍c语言的基本构成、格式,使我们对c语言有个初步认识。
#include //头文件,是C语言系统中特有的文件
int main() //主函数
{
printf(“Hello World!”); //主函数体
return 0; //返回值
}
一个C语言程序只有一个主函数,程序执行时从主函数开始,在主函数内结束;函数由函数说明和函数体两部分构成;函数说明部分包含了对函数名,函数类型,函数参数等的定义和说明;函数体包含了变量说明和执行语句。
2选择结构和循环结构
C语言中有三大结构,分别是顺序结构、选择结构和循环结构。
C语言顺序结构就是让程序按照从头到尾的顺序依次执行每一条C语言代码,不重复执行任何代码,也不跳过任何代码。
C语言选择结构也称分支结构,就是让程序“拐弯”,有选择性的执行代码;换句话说,可以跳过没用的代码,只执行有用的代码。
C语言循环结构就是让程序“杀个回马枪”,不断地重复执行同一段代码。顺序结构很好理解,无需过多阐述,简单概述一下选择语句和循环语句。
其中有两个选择语句,if语句和switch语句。
if(表达式)
{
语句1;
}
else
{
语句2;
}
switch(表达式)
{
case常量1:语句1; break;
case常量2:语句2; break;
case常量3:语句3; break;
default:语句n+1;break;//(此处break可有可无)
}
循环语句有三种,for循环语句,while循环语句,do……while循环语句。
//for语句
for(语句1;条件表达式;语句2)
{
循环体
}
//while语句
while(条件表达式)
{
循环体
}
//当循环条件表达式为真(即给定的条件成立),就执行循环体语句。
//do…while语句
do{
语句
}while(条件表达式)
//循环条件和while循环条件一致。
3数组
数组就是一列具有相同类型的数据的集合,这些数据在内存中依次挨着存放,彼此之间没有缝隙。C语言数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。数组分为一维数组和二维数组,当数组中每个元素都只带有一个下标时,称这样的数组为一维数组,一维数组实质上是一组相同类型数据的线性集合。二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
//一维数组定义格式:
type name[size];
//例如:
int mark[5];
//一维数组的初始化
//(1)对数组全部元素
int a[4]={0,1,2,3};
//(2)对部分元素赋值
int a[4]={2,3};
//(3)int a[]={1,2,3}等价于 int a[3]={1,2,3};
//二维数组定义格式:
//类型标识符数组名[行常量表达式] [列常量表达式];
//例如:
int a[3][4],b[3][5];
//二维数组的初始化
int a[][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int a[][4]={ {1},{0,3},{8}};
4函数
每个C程序都至少有一个函数,即主函数 main(),如果程序的任务比较简单,全部的代码都写在main()函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main()函数中,main()函数将非常庞大繁杂,结构混乱。我们可以根据程序的逻辑和任务的分工把代码划分到不同的自定义函数中,main()函数更关心业务逻辑和处理流程,需要执行具体任务的时候,调用其他的自定义的函数就可以了。引入函数得本质就是把一个复杂的任务分解为子任务,每一个子任务都是一个较小的功能模块,通过实现这些小功能模块来实现复杂的问题,从而使得比较复杂的问题变得简单。
/*类型标识符函数名(数据类型参数[数据类型参数......])
{
说明语句部分;
可执行语句部分;
}*/
//例如:
int max(int a,int b)
{
int m;
m=(a>b?a:b)
}
main()
{
int x,y,k;
scanf("%d%d",&x,&y);
k=max(x,y);
printf("%d",k);
}
5指针
没学指针就是没学 C语言!指针是 C语言的精华,也是 C语言的难点,破解 C语言指针,会让你的 C语言水平突飞猛进。所谓指针,也就是内存的地址;所谓指针变量,也就是保存了内存地址的变量。不过,人们往往不会区分两者的概念,而是混淆在一起使用,在必要的情况下,大家也要注意区分。关于指针我们需要重点学习的内容有指针与地址、指针与函数参数、指针与数组、指针数组以及指向指针的指针和指向函数的指针等等。
6结构体
C语言结构体从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float等基本类型组成的。你可以认为结构体是一种聚合类型。结构体部分重点学习包括结构体的定义方法、结构体的引用方法、结构体数组、结构体指针的概念及应用、结构体与函数。
在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。
struct Student{ //声明结构体
char name[20]; //姓名
int num; //学号
float score; //成绩
};
struct Student stu1; //定义结构体变量
学习视频
现在网络如此发达,网上的学习资源也是非常的丰富。大家可以自行上网查找适合自己的学习视频。C语言基础理论知识讲解完善;循序渐进,从易到难,学习很轻松;语言组织严谨,风趣,很容易接受,让你有一直学下去的动力。
边栏推荐
- 基于B/S的医院管理住院系统的研究与实现(附:源码 论文 sql文件)
- Full stack development of quartz distributed timed task scheduling cluster
- Redis之Geospatial
- [daily question] Porter (DFS / DP)
- 一大波開源小抄來襲
- Redis之连接redis服务命令
- 068.查找插入位置--二分查找
- Global and Chinese market of AVR series microcontrollers 2022-2028: Research Report on technology, participants, trends, market size and share
- Minio distributed file storage cluster for full stack development
- Five layer network architecture
猜你喜欢
Une grande vague d'attaques à la source ouverte
Hero League rotation map automatic rotation
Heap (priority queue) topic
Redis分布式锁实现Redisson 15问
一大波开源小抄来袭
Sqlmap installation tutorial and problem explanation under Windows Environment -- "sqlmap installation | CSDN creation punch in"
工作流—activiti7环境搭建
Mapreduce实例(八):Map端join
QDialog
五月集训总结——来自阿光
随机推荐
Compilation of libwebsocket
MapReduce instance (x): chainmapreduce
五月刷题26——并查集
软件负载均衡和硬件负载均衡的选择
Redis之Lua脚本
Redis之cluster集群
IDS' deletion policy
Global and Chinese markets for small seed seeders 2022-2028: Research Report on technology, participants, trends, market size and share
Kratos战神微服务框架(一)
Redis之主从复制
MapReduce工作机制
Leetcode:608 树节点
Libuv thread
五月刷题27——图
What are the models of data modeling
Cap theory
Redis之发布订阅
有软件负载均衡,也有硬件负载均衡,选择哪个?
Hard core! One configuration center for 8 classes!
Redis geospatial