这一天和师弟吃饭,师弟问道:“师兄,c语言也学习了一下了,我在想我能够用c做点什么呢?是不是可以做个简单的计算器呢?”
我赞许的说道:“不错,可以从简单的两个整数的加法开始。”
师弟说:“在c语言里面怎么表示整数呢,以及怎么做加法呢?是不是还要支持整数的输入?”
我笑道:“不错不错,想的很好。那就简单的科普一下c的基础知识。”
基础知识科普
在c语言编写的程序中,不论是小型程序,还是大型项目,都是由函数和变量组成。
什么是变量
变量可以理解为存储单元,在计算过程中存储相关值。
在C语言中,有几种常见的变量类型,包括:
**1. 整型变量:**用于存储整数值。例如:int num = 10;
**2. 浮点型变量:**用于存储实数值。有两种浮点型变量的类型:float(单精度浮点数)和double(双精度浮点数)。例如:float pi = 3.14;
**3. 字符型变量:**用于存储单个字符。由单引号括起来。例如:char ch = ‘A’;
**4. 字符串变量:**用于存储一串字符。由双引号括起来。实际上,字符串变量是以字符数组的形式存在的。例如:char str[] = “Hello”;
**5. 布尔型变量:**用于存储布尔值,只有两个可能的值:true或false。在C语言中,布尔类型没有直接的关键字,通常使用int来表示。例如:int flag = 0(0表示false);int flag = 1(1表示true)。
**6. 枚举变量:**用于定义一组命名的整数常量。例如:enum Weekday {MON, TUE, WED, THU, FRI, SAT, SUN};
**7. 指针变量:*用于存储内存地址。指针变量可以指向其他变量或数据结构。例如:int ptr;
**8. 结构体变量:**用于存储多个不同类型的数据项。结构体可以自定义,包括多个成员变量。
这里只是简单了解一下c语言中的常用的变量类型,有个概念,后续随着我们的使用,会更加深入的了解各个变量的具体含义。
关于变量的使用有一些概念:
**1. 变量声明:**在使用变量之前,需要先声明变量。变量声明指定了变量的名称和数据类型。例如,int num; 声明了一个名为num的整数变量,这时候它的值是一个随机值。
**2. 变量定义:**变量定义是变量声明的一种特殊形式,它不仅指定了变量的名称和数据类型,还进行了赋值。如int num = 10;
**3. 变量赋值:**通过赋值操作符(=)可以将一个值赋给变量。例如: num = 20;将值20赋给变量num。
**4. 变量命名规则:**C语言中变量的命名遵循一定的规则。变量名由字母、数字和下划线组成,必须以字母或下划线开头,且不能是C语言的关键字。变量名区分大小写。
**5. 变量作用域:**变量的作用域指的是变量在程序中可见的范围。在C语言中,变量的作用域可以是全局的(在整个程序中可见)或局部的(在某个特定的代码块或函数中可见)。
**6. 变量的值:**变量的值是存储在变量中的数据。可以通过变量名来访问变量的值。例如: int result = num + 5; 变量num加5,并将结果赋给变量result。
今天我们实现加法器将要用到的变量是整型变量。将会涉及到变量的命名、声明、赋值、取值、计算等操作。
什么是函数呢?
函数可以理解为是一段封装了特定功能的可重用代码块。它接受一些输入(称为参数)并执行一系列操作,然后返回一个结果(称为返回值)。
函数在C语言中具有以下特点:
**1. 函数声明:**在使用函数之前,需要先声明函数。函数声明包括函数的返回类型、函数名和参数列表。例如,int add(int a, int b);声明了一个名为add的函数,它接受两个整数作为参数,并返回一个整数。
**2. 函数定义:**函数定义是函数实际的实现。它包括函数声明和函数体。函数体是一系列语句的集合,用于定义函数的具体操作。
**3. 参数传递:**函数可以接受零个或多个参数。参数是从调用函数处传递给函数的值。在函数体内,可以使用参数的值执行操作。C语言中的参数传递存在着传值和传址的差异性,后续会详细说明。
**4. 返回值:**函数可以返回一个值给调用者。返回值可以是任何数据类型,例如整数、浮点数、字符等。使用return语句将结果返回给调用者。也存在不使用return的情况,那就是默认返回void。
**5. 函数调用:**函数通过调用来执行。函数调用时,传递给函数的实际参数值会被赋值给函数定义中的形式参数。调用函数后,控制权会传递给被调用的函数,并在函数执行完毕后返回到调用点。
函数的使用可以使代码更加模块化、可重用和简洁。
一般而言,函数的命名都很随意,有驼峰式和下划线式,比如computeSum(驼峰)和compute_sum(下划线),一般在Linux中,下划线式命名偏多。
这里重点说明一下main函数,main函数是一个特殊的函数,它的名字是确定的,它告诉操作系统程序的入口在哪里。
加法器的实现
经过简单的科普之后,加法器的实现就呼之欲出了。具体实现代码如下:
#include <stdio.h>
int add(int a, int b) { //加法函数
int sum = a + b; //两个数相加
return sum; //返回两个数的和
}
int main()
{
int a, b, sum;
scanf("%d %d", &a, &b); //标准输入函数,会将读入的值赋给a和b
sum = add(a, b); //调用加法函数,将返回值赋值给sum变量
printf("sum=%d\n", sum); //标准输出函数,终端打印a+b的和
}
总结
c语言入门没有想象的那么简单也没有想象的那么难。在小马过河的时候,兔子告诉小马河水很深,淹死了它的同伴,老牛告诉小马,说水很浅,自己经常下水,没事。水深水浅,只有自己真的去趟一遍就知道了。
这里遗留2个问题
问题一: 未初始化的局部变量的初始值是多少?
问题二: 未初始化的全局变量和静态变量的初始值是多少?
参考答案
问题一: 随机值。
问题二: 会在声明时自动初始化为零(或者对应类型的空值)。