系列文章目录
什么是C语言
第一个C语言程序
数据类型
变量、常量
字符串+转义字符+注释
选择语句
循环语句
函数
数组
操作符
常见关键字
define 定义常量和宏
指针
结构体
前言
上篇博客我们学习到字符串+转义字符+注释,接下来我们学习以下的内容
一、选择语句
c语言中的选择语句:if(条件表达式) else语句
注:此处可参照英文单词的意思来理解,if如果的意思,整体理解就是,if括号内的条件表达式成立,执行if语句后的内容。反之,执行else语句后的内容
举个简单的例子:如果你好好学习,毕业时获得一个好offer,如果不好好学习,毕业后去搬砖
代码如下(示例):
```c
#include<stdio.h>
int main()
{
//这里我们要输入选择,用0/1来表示选择,所以需要一个整形变量
int c=0;
printf("要好好学习吗?(0/1):");//用0表示不好好学习,1表示好好学习
scanf("%d", &c);
//if括号后面不需要;号,if后要执行多个语句时用{}括起来。ps:单个语句可以不需要{},但初学者建议加上{}方便阅读代码
if(c==1)//c语言中判断相等用 == 两个等号
{
printf("好offer\n");
}
else
{
printf("去搬砖\n");
}
return 0;
}
二、循环语句
1.while语句:while(循环条件)
代码如下(示例):
#include<stdio.h>
int main()
{
//人们说,当一个程序员码够两万行代码时,才称的上一名合格的程序员
int n=0;//用n来表示行数
while(n<=20000)//注意这里写的循环条件是循环继续的条件.当n<=20000时循环继续
{
n++;//n每次自加1等效于n=n+1;
printf("努力写代码\n");
}
if(n>20000)
{
printf("恭喜你成为大牛\n");
}
return 0;
}
2.for语句
for(循环变量;终止条件;循环变量增量)
代码如下(示例):
#include<stdio.h>
int main()
{
int n=0;
for(n=0;n<=20000;n++)
{
printf("努力写代码\n");
}
if(n>20000)
{
printf("恭喜你成为大牛\n");
}
return 0;
}
3.do…while语句
代码如下(示例):
#include<stdio.h>
int main()
{
int n=0;
do
{
printf("努力写代码\n");
n++;
}while(n<=20000);
return 0;
}
注:这里关于for语句和do…while语句不做过多介绍,大家认识就行。
三、函数
函数的使用会让我们的代码更加清楚明了,也会在一定程度上简化我们的代码,下面举一个简单的例子来让大家认识函数。
#include<stdio.h>
int main()
{
//如果我们要让两个数相加,可以这样写
int a=10;
int b=20;
//这里要把两个数相加的值存起来,需要定义第三个变量
int sum=0;
sum=a+b;
printf("%d\n", sum);//打印结果是30
//我们也可以写成函数的形式
return 0;
}
#include<stdio.h>
//定义一个函数Add
//数据类型+函数名(参数1,参数2)
//大家见过的一些代码可能有这样写void Add(int a,int b)
//这里的void是指我们不需要返回数据,当我们需要返回数据时,返回的是什么类型的数据,这里的void就换成对应的数据类型
//我们定义的这个函数需要返回一个整形,所以我们用int Add(int a,int b)
int Add(int x, int y)
{
int sum=x+y;
return sum;//return就表示我们要返回的值,如果不需要返回值,写return 0;
}
int main()
{
int a=10;
int b=20;
//当我们定义了一个函数该如何使用呢
//因为我们的函数会返回一个整形,所以我们要定义一个整形变量来接受函数的返回值
//函数的使用,直接用函数名+要传递的参数就可以
//Add是我们定义的函数的名字,我们要将a和b的值加起来,所以传递a和b
//函数中定义的变量x和y是我们用来存储传递过去的a和b的值用的
int sum=Add(a,b);
printf("%d\n", sum);//打印的结果为30
return 0;
}
四、数组
c语言中定义一组相同类型元素的集合叫做数组,数组是用来存储多个相同类型元素的数。
#include<stdio.h>
int main()
{
//定义一个数组
int arr[10]={0,1,2,3,4,5,6,7,8,9};
//arr是数组名 [10]表示数组存储的元素的个数
//如何访问数组中的元素呢?用下标来访问
//数组中每一个元素都有一个对应的下标,c语言规定,下标从0开始
//所以我们需要定义一个变量来表示下标,10个数,下标就是0~9
int i=0;
for(i=0;i<10;i++)
{
printf("%d ", arr[i]);
}
return 0;
}
五、操作符
简单认识一下一些常见的操作符,不多讲
1、算术操作符
+ - * / %
2、移位操作符
>>(右移) <<(左移)
3、位操作符
&(按位与) |(按位或) ^(按位异或)
4、赋值操作符
= += -= *= /= &= ^= |= >>= <<=
5、单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
6、关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
7、逻辑操作符
&& 逻辑与
|| 逻辑或
8、条件操作符(exp 表达式)
exp1 ? exp2 : exp3
9、逗号表达式
exp1, exp2, exp3, …expN
10、下标引用、函数调用和结构成员
[] () . ->
六、常见关键字
auto break case char const continue default do double
else enum extern float for goto if int long register return
short signed sizeof static struct switch typedef union unsigned
void volatile while
1、typedef关键字
#include<stdio.h>
//typedef关键字可以用来定义类型
typedef int type;
//type被定义为int这种类型,可以用type来声明变量
int main()
{
type i=10;
int i=10; //二者是一个效果
return 0;
}
2、static关键字
c语言中,static可以用来修饰变量和函数
static可以改变修饰的局部变量的生命周期
#include<stdio.h>
static int a=10;//static修饰的全局变量
static int Add(int a,int b)//static修饰的函数
//函数的调用会在栈上申请一片空间,当函数调用结束时,这片空间也就归还回去
//在函数中定义的变量会在函数调用结束时释放
//当用static修饰函数中的局部变量时,该变量就不再是在跟随函数在栈上开辟空间
//而是在静态区上开辟空间,所以当函数结束时,该变量并没有被销毁
//ps.有关开辟空间的知识请自行去百度了解,这边不做过多解释
void test()
{
static int t=0;static修饰的局部变量
t++;
printf("%d ", i);
return 0;
}
int main()
{
int i=0;
for(i=0;i<10;i++)
{
test();//打印1~9 大家可以自行去试一下去掉static会打印出什么
}
return 0;
}
七、#define定义常量和宏
#include<stdio.h>
#define MAX 100 //#define定义常量,可以直接使用
#define ADD(x,y) ((x)+(y)) //#define定义宏,大家认识就行
int main()
{
printf("%d\n", MAX); //结果为100
//使用宏,会返回结果
int sum=ADD(1,2);//这里的1,2会直接替换宏中的x,y
printf("%d\n", sum);//结果为3
return 0;
}
八、指针
c语言中指针是用来存放地址的变量
1、内存
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
#include<stdio.h>
int main()
{
int n=10;
int *p=&n;//定义指针变量 数据类型+(*) &取地址符,用来取出存放变量的地址
//指针的使用 *p
*p=20;//p中存放的是n的地址,用*p来找到n,并将n的值修改为20
return 0;
}
2、指针变量的大小
32位系统中只指针的大小为4个字节,64位系统中指针的大小为8个字节
九、结构体
struct结构体关键字,用来定义结构体,结构体可以用来声明多个数据类型,当有一个复杂对象时,可以用结构体来定义。
#include<stdio.h>
//在c语言中如何定义一个学生类型呢,可以用结构体定义
struct student
{
char nama[20];//姓名
int age;//年龄
char sex[5];//性别
char id[10];//学号
}
int main()
{
//结构体的使用
struct student stu={"张三",18,"男","21010358“};
//struct student是结构体类型,stu是定义的结构体变量
printf("name=%s age=%d sex=%s id=%s", stu.name,stu.age,stu.sex,stu.id);
return 0;
}