C语言:基本语法汇总

本文将对计算机编程的入门语言——C语言中的基本语法,包括判断,循环,函数,结构体,数组等概念进行介绍讲解。


1 判断语句

在生活中我们经常要做出选择,程序也是如此。购物时的标准,优惠券的折扣条件等,在代码中都需要if语句来进行判断。假如我们要判断一个正整数是偶数还是奇数,可以这样子写:

其中if后面括号中的 x%2 == 0 是一个判断语句,当x%2的值等于0的时候,x%2==0成立,这个表达式会返回1给if语句,表示条件成立。而我们知道,正整数x如果模2等于0,就说明它是偶数。除了a==b可以判断a和b是否相等之外,也可以用a!=b来判断a和b是否不相等。这个多敲点代码就明白了。

2 for循环

接下来我们来学习循环的概念。如果我们要计算1+2,可以简单的定义两个变量i=1和j=2,然后让answer=i+j,就得到了我们想要的结果。但是,如果我们要计算1+2+3+...+100呢?难道我们要定义100个变量吗?理论上是可以这样做,但是这样的代码写起来就很没有效率。我们将要学习的循环可以很好的解决这个问题。

以这个代码中的for循环为例,i=0表示初始化的内容,i<=100表示循环继续执行的条件。i++表示在每次循环体执行完之后执行的内容。19-21行的中括号{}表示循环体的部分,这里我们循环执行ans = ans + i。在第一次循环时,i=1,执行完循环体后ans的值为1。之后执行i++后i=2,符合i<=100的条件,因此进入下一次的循环……以此类推,直到i=101的时候,跳出循环。

3 while循环

while循环,是for循环的另一种写法。它的基本语法如下:

while(循环条件){
    循环体;
}

同样是计算1+2+…+100,使用while循环的写法如下:

配套循环还有两个语句,分别是continue和break。continue让代码跳过当前循环,进入下一次循环。break则是跳出整个循环。假设我们现在要计算前100个正奇数的和,代码可以这样写:

代码解析:

51行:while(1)代表一个条件判断永远为1的循环,也就是无限循环。

52-55行:判断当前的i是否为偶数,是偶数则continue跳过当前循环。

56-58行:判断是否已经计算了100个奇数,如果是则跳出循环。

当我们使用for循环或者while循环时,条件判断永远成立,使得循环体一直循环反复地执行的情况,就是死循环。死循环可以说是新手最常犯的一个错误。例如,使用while循环的时候,忘记使用break,或者是自变量忘了自增,都可能导致死循环。

4 数组

假如我们有一组学生的成绩,在程序中要如何保存这组数据呢?我们可以使用很多的变量,但是更合理的方式是用数组来进行存储。所谓的数组,其实就是按顺序排列好的一组变量。比如int a[5];对第一个位置的变量赋值为10可以用a[0]=10进行赋值。要取出第一个位置的值,只需要取a[0]即可。

ps:a[i]中的i称之为下标,需要注意的是,大部分编程语言中,下标都是从0开始,而不是从1开始,这与现实世界有些违背。

其中68-70行代表循环读取n个数,并依次放在数组a中。我们已经学习了printf函数用于显示数据,而scanf是与之相对的,用来读取数据。它的格式跟printf类似,但是需要注意后面的变量前面需要加上&,表示变量对应的地址。

5 函数

在计算1+2+…+100后,可能我们会想着计算1+2+…+1000,或者是2+3+…+101等不同范围的求和,这样我们需要不停地改动代码。如果能够把计算这个部分抽取出来,单独作为一个部分,想要计算的时候,只要输入范围,就可以帮我们计算这个范围求和之后的值。函数就是这样一个工具,它把一个特定的过程抽取出来,作为一个模块,可以重复调用。

代码解析:

图中的3-9行就是一个函数,其中的int calculate_sum(int start,int end),第一个int表示的是返回值的类型。代表当这个函数被调用时,会返回一个int类型的值。后面的calculate_sum是函数名,使用函数时主要是根据函数名来指定函数。而后面括号中的start,end是两个int类型的参数,参数的多少是根据我们的需要自己设置的。

在定义的时候,我们并不知道参数start和end具体的值,进行函数调用时,需要指定参数的值。比如13行中,int ans1 = calculate_sum(1,100);把1传给了start,100传给了end。由于函数的返回类型为int,所以定义的ans1也是int类型。

在函数的帮助下,当我们有了新的计算需求后,并不用修改原有的代码,只需要增加新的代码即可,代码的可维护性大大提高。

6 结构体

一个学生,有学号,有成绩,如何在c语言中表示“学生”这个概念呢?结构体就可以实现。结构体的关键字是struct,定义完之后,就可以用结构体来代表一个学生。

代码解析:

12-15定义了一个结构体student,它包含了int类型的学号number,以及int类型的成绩score

18-20定义了学生a,学号为1,成绩为100.

21-23定义了学生b,学号为2,成绩为90

24-26定义了长度为10的结构体数组x,并把a,b放在数组的开头。

7 指针

我们定义的变量,无论是int变量,float变量,在执行时最终都会对应到内存里的某个位置。而指针就是指向变量和对象的地址。就像桌面的快捷方式,它指向一个真实的文件。

指针的用途非常广泛,比如如果你想通过函数改变一个变量的值,就得用指针而不能用值传递。还有在很多时候变量,特别是对象的数据量实在太大,程序员就会用指针来做形参,只需要传递一个地址就行,大大提高了效率。

在C语言中,我们可以通过int* p 的方式来定义一个int类型的指针。在上面代码第6行中,我们定义了指针p,并把变量i在内存中的地址通过&i的方式获取并赋给p。在第8行中,我们通过 *p 的方式取到了 指针p对应的内存中的值

然而,指针的知识点比较复杂,一开始不理解也没关系,并且也不建议初学者去深究指针知识点,知道有这个概念即可。等以后有需要用到了,再深入学习。

  • 11
    点赞
  • 102
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值