前言:本章是上一章的补充和完善。
一、if else分支语句的补充
代码的风格很重要!很重要!很重要!(重要的事情说三遍)
如果代码风格不好的可能会出现下面问题:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
if(b == 2)
printf("hehe\n");
else
printf("haha\n");
return 0;
}
判断一下上面的代码最终会打印出什么???????
答案:最终结果是什么都不打印
原因:因为if只会和自己最近的那个else组合,变成一个if-else语句。
其中if(b == 2)会与else组成if-else语句,则int a = 0;不符合if(a == 1),则不会进入此if语句则不会打印。
改正后的代码:
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
- 适当的使用 { } 可以使代码的逻辑更加清楚。
- 所以,代码风格很重要!
二、for和do while循环的使用和注意事项
1、for循环
语法:
for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1是初始化部分; 表达式2是条件判断部分; 表达式3是调整部分
代码启动顺序:
for(i=1 初始化; i<=10 判断部分; i++ 调整部分)
直到 i 不符合判断部分的范围,则跳出循环。
break和continue在for循环的使用
break在for中的使用和在while中使用是一样的
continue在for使用和在while中有些许不同
while:
continue在while中返回循环时不会回到i++,则会进入死循环。
for:
continue在while中返回值仍然可以回到i++,则除了5不会被输出。
注意事项:
- 不可在for 循环体内(初始化部分)修改循环变量,防止 for 循环失去控制。
- 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。(i=1 左闭; i<=10 右开)
2、do-while循环
语法:
do
循环语句;
while(表达式);
举一个”栗子“:
#include <stdio.h>
int main()
{
int i = 0;
do
{
printf("%d\n", i);
i++;
}
while (i < 10);
return 0;
}
do-while循环的特点就是一进去就先做”事“先打印和i++,然后再来判断i是否 <10,如符合则继续循环,否则跳出循环。
注意事项:
- 循环至少执行一次,使用的场景有限,所以不是经常使用。
三、函数
数学中我们常见到函数的概念,但C语言的函数是怎么样的呢?
在维基百科中对函数的定义:子程序
C语言中函数有两个类型:
- 库函数
- 自定义函数
库函数:
库函数是由编译程序根据一般用户的需要,编制并提供用户使用的一组程序。
常用的标准头文件有:ctype、time 、stdio、stdlib、math、string
#include<stdio.h> ------------ printf
#include<string.h> ------------ strlen
#include<math.h> -------------ouble acos(double x)、double asin(double x)、double atan(double x)等
自定义函数:
自定义函数是根据实际情况的需要来定义使用的,例如Add(求加法)、Max(求最大值)等
举一个例子:
#include <stdio.h>
int Add(int x, int y)//自定义函数(加法)
{
return x + y;//算出来的数放回sum
}
int main()
{
int num1 = 10;
int num2 = 20;
int sum = Add(num1, num2);//调用函数
printf("sum = %d\n", sum);
return 0;
}
四、数组
数组是一组相同类型元素的集合。
数组的创建方式:
type_t arr_name [const_n];
type_t 是指数组的元素类型 const_n 是一个常量表达式,用来指定数组的大小
例如:
代码1
int arr1[10]; /* 说明整型数组a,有10个元素 */
char arr2[10];
float arr3[10];
double arr3[10];
代码2
int a = 10;
int arr[a];
注意事项:数组创建,在C99标准之前, [ ] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数 组的概念。
数组的初始化:
数组每个元素都有下标,且下标是从0开始。
int arr[10] = {1, 2, 3, 4};
//当{ }中值的个数少于元素个数时,只给前面部分元素赋值,表示只给arr[0]~arr[3]4个元素赋值,而后6个元素自动赋0值。
int arr[ ] = {1, 2, 3, 4, 5};
//当[ ]里没有放值时,会根据{ }里的元素来定值
求元素个数:
int arr[10];
int sz = sizeof (arr) / sizeof(arr[0]);
总数/其中一个的数=元素个数
五、运算符
操作符分类:
算术操作符
关系操作符
逻辑操作符
赋值操作符
算术操作符:
关系操作符:
逻辑操作符:
赋值操作符:
六、指针
1. 指针是内存中一个最小单元的编号,也就是地址
2. 平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量
0x2000和0x2020是地址(十六进制)
3.1415是数值
指针变量:
我们可以通过&(取地址操作符)取出变量的内存其实地址,把地址可以存放到一个变量中,这个 变量就是指针变量
#include <stdio.h>
int main()
{
int a = 10;//变量赋值
int* p = &a;//a的地址存在指针变量*p里
return 0;
}
使用和改变指针:
#include <stdio.h>
int main()
{
int a = 10;//变量赋值
int* p = &a;//a的地址存在指针变量*p里
*p = 20;//找到和改变指针变量的值
printf("%d\n", a);//输出
return 0;
}
注意事项:
- 要避免使用未初始化的指针。. 很多运行时错误都是由未初始化的指针导致的,而且这种错误又不能被编译器检查所以很难被发现。
总结:
本章C语言入门是根据本人所知道的知识来写的(边学边分享),其中有一部分资料是在网络中获取的,本人也只是个编程小白,如果有不足或错误的地方可以给一些建议,我也会好好改进。最后,感谢您的阅读!让我们一起向着进大厂而努力吧!!!