赞
踩
今天是初识C语言系列第三篇,主要学习的内容有函数,数组和几个简单的操作符.
我们在初高中已经学过了数学中的函数,对函数的概念有一定的理解,那么在C语言中的函数有什么不同呢,我们来结合一个示例来理解,首先我们来写一个代码来计算两个数的和,并且打印出来。代码如下:
#include<stdio.h>
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
scanf("%d %d",&num1,&num2);
sum = num1 + num2;
printf("sum=%d\n",sum);
return 0;
}
这应该是最初会写出的代码,那么我们想要用函数来实现该怎么做呢,如下:
int Add(int x, int y) { int z=0; z=x + y; return z; } int main() { int num1 = 0; int num2 = 0; int sum = 0; scanf("%d %d", &num1, &num2); sum=Add(num1, num2); printf("sum=%d\n", sum); return 0; }
我们先来分析理解这个代码,我创建了一个函数名叫Add,前面的int表示我返回的值是整形,在主函数中,我们直接调用了Add函数,将num1和num2传过去用x和y来接受,返回了x和y的和,实际上也就是sum,这样就实现了用一个函数来实现计算两个数的和。可能有人会觉得这用函数不是更麻烦了吗?但如果我们仔细想想如果是在一个项目里面代码量特别大的话,我们需要计算的那么多,每次都得写求和的那段代码,但是如果我们写出一个函数,就可以重复利用,每次只需要调用这个函数即可。
例如
int arr[10] = {1,2,4,5,6,7,8,9,10};
创建一个数组大小为10的整形数组。
数组下标是从0开始的,一定要记住,我们将一组数放入一个数组那么肯定是要使用的,访问数组的方式就是使用下标;例如以下代码
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i = 0;
for (i = 0; i < 10; i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
这就是一个简单的使用数组的例子,需要注意的就是我的i是从0开始的,就是数组的下标是从0开始的,然后依次打印出了数组里面的数。
另外还需要注意数组的定义大小只能是常量,不能是变量,使用变量是变长数组,当前许多编译器并不支持C99标准,所以无法使用,如果有条件的话,可以在Linux环境下尝试感受一下。
关于C语言中的操作符呢其实有很多,我们这里不会一一去进行讲解,只能挑几个常用的来解释一下,当我们在深入学习C语言的时候再慢慢来学习。
+ - * / %
这里面有许多都是我们已经熟悉的,其中加减乘除不用多说,我们来看一下%,这个名字叫做取模,或者叫做取余。作用就是取两个数相除的余数。
如下图
可以19%3得到的是余数1.
>> <<
移位操作符其实同二进制有关,这里只作简单介绍一下
这里以32位机器,左移来举例,当我们用左移操作符的时候,二进制序列向左移动一位,右边空出来一位,用0来补齐,这就是左移操作符的作用,右移同理;
& ^ |
这里初识C语言系列中暂且不作解释,后续学习;
= += -= = /= &= ^= |= >>= <<=
我们这里只挑几个来解释,‘=’是赋值,注意不是判断相等,不是判断相等,不是判断相等,这点一定要注意,因为这和我们平时的思维不太一样,一定要注意。
‘+=’的意思,用下面来解释
i += 1;
i = i + 1;
这两个式子是完全等价的,-=和=,/=同理也就都能理解了.
我们暂且只介绍这几个
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
'!'这个操作符叫做逻辑反操作,我们用以下代码来解释
#include<stdio.h>
int main()
{
int i = 1;
if (!i)
printf("%d\n", i);
return 0;
}
判断部分本来i是1,为真,应该执行语句打印出1,然而加上了!意思就变为了如果i为假才执行语句.
负值,正值没什么好说的,&取地址我们也已经用了很多,当输入或者传地址的时候我们会使用它。
‘sizeof’是用来计算操作类型数的大小,比如计算int类型的大小,或者计算数组元素的个数时候也可以用数组大小除以数组内每一个元素的大小,如下
#include<stdio.h>
int main()
{
int arr[] = {1,2,3,4,5,6,7,8};
printf("%d\n", sizeof(int));
int sz = sizeof(arr) / sizeof(arr[0]);
printf("%d\n", sz);
return 0;
}
前置++和后置++我们也需要用示例来理解,如以下代码
#include<stdio.h>
int main()
{
int i = 0;
printf("%d\n",i++);
return 0;
}
我们打印出的结果是0,说明我们是先使用了i然后再去++,而如果我们将带代码改成
#include<stdio.h>
int main()
{
int i = 0;
printf("%d\n",++i);
return 0;
}
可见我的i是先++,然后再打印所以打印出了1。到这里我们就理解了前置++和后置++的区别,同理前置–和后置–也是一样的道理。
*这个是个解引用操作符我们要学到指针再来学习。
(类型)是用来进行强制类型转换,也很好理解,
#include<stdio.h>
int main()
{
int i = 10;
printf("%f\n",(float)i);
return 0;
}
可以看到我定义的i是个整形10,然后我可以通过强制类型转换来将它转换为float类型。
=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
这些关系操作符基本都能理解,就是用来判断或者调整使用的。
&& 逻辑与
|| 逻辑或
这两个逻辑操作符与二进制相关我们也是留到后期再来学习
exp1 ? exp2 : exp3
这个怎么来理解呢?我们看以下代码
#include<stdio.h>
int main()
{
int x = 10;
int y = 8;
int i = (x > y ? x : y);
printf("%d\n",i);
return 0;
}
可以看到,输出的结果是10,也就是x的值,其实这个表达式的意思就是先问x大于y吗,如果x>y则返回x,否则返回y,看起来是不是特别简单方便,所以它只能用来处理一些较为简单的逻辑.
exp1, exp2, exp3, …expN
这个我们同样放到后期来学习
[] () . ->
我们这里只来解释一下第一个,[]其实这个我们在上面数组的使用部分已经演示了一遍,就是像访问数组元素的时候,使用[]来通过下标来寻找数组中的元素的目的.
关于初识C语言其三里面由于是操作符内容占很多,有些操作符由于并未涉及,我们放到后期再来学习.
那么这期就结束啦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。