C语言的二三事

前言

本文将通过简单的案例来进行c语言的快速入门,及通过可以运行的案例,并在开始说出能够完全自行敲出代码所需要的知识面,以此来帮助我们自行查找相关的资料进行针对性学习

关于程序的大框架

首先先给大家简单的写一下c语言的程序框架,在前期C语言的学习的过程中,这些程序基本是每个c’语言里面必要的框架。
下面展示一些 内联代码片

// 
# include <stdio.h>
int main()
{

return 0;
}

上面就是我们写程序的大框架;接下来我们做一个简单的尝试,输出”hello world“
下面展示一些 内联代码片

#include<stdio.h>
int main()
{
printf("hello world")
return 0;
}

这样我们简单的了解到代码的输出了。

关于进制转换

我们一般常见的进制接下来给大家列举几个:
十进制、二进制、八进制、十六进制
十进制:逢十进1: 0~9构成
二进制:逢二进1: 0~1构成
八进制:逢八进1: 0~7构成
十六进制:逢十六进1: 09,af构成
为了区分不同的进制:
我们给八进制前加0,十六进制前加0x

数据类型

在了解数据类型之前,我们先了解一下32个关键字,这些关键字在我们后面的c语言的学习中都会经常用到。
数据类型:char、short、int、long、float、double、struct、enum、union、void
控制语句:if、else、switch、case、default、for 、do、while、break、continue、goto
存储类型:auto、static、extern、register
const:只读
return:返回函数
signed:有符号数
unsigned:无符号数
sizeof:计算所占内存空间的大小:单位(字节) sizeof(数据类型)//sizeof(变量名)
typedef:给已有的数据类型起别名;
volatile:防止编译器优化
其中数据类型所占的字节,我们是需要牢牢记住的

常量与变量

常量:程序运行期间,不能也不会被改变的量
变量:需要在内存中开辟空间
如何定义一个变量呢???
存储类型 数据类型 变量名(我们以整数类型举例)
int a = 10;
那么a就是变量名
在常量的学习过程中,我们特别要注意的一个常量是
宏只是单纯的表示替换,用大写字母表示

我们利用宏,来求圆的周长和面积

在这里插入图片描述

变量的初始化

定义变量,就是给变量一个初始值。

注意:
1、全局变量如果没有初始化,他的值为0!
2、局部变量如果没有初始化,他的值为随机值!
(为了避免随机值,我们一般给局部变量初始化为0!)

auto:修饰局部变量,存储在栈区
register:修饰局部变量的,修饰的变量存储在寄存器中,但是他的内存空间很小,因此,当寄存器已满时,就算用register修饰了,还是存储在栈区
extern:修饰全局变量,存储在静态区
程序可以由多个.c构成,但是有且只能有一个main函数
在这里插入图片描述

extern作用:告诉编译器,该变量已经在其他文件中定义过了
Static: 即可以修饰局部变量,也可以修饰全局变量,存储在静态区
1、如果static修饰局部变量:
作用:延长局部变量的生命周期;如果局部变量没有初始化,那么局部变量的值为0;如果初始化了,只能初始化1次;
在这里插入图片描述
在这里插入图片描述
2、如果static修饰全局变量:
作用:限制作用域,只能在本文件内使用

数据类型转换

强制类型转换(我们自己去转的)

在这里插入图片描述

隐式类型转换(编译器去转)

我们在类型转换的时候,记住下面这张图即可。
在这里插入图片描述
横向箭头:不管有没有进行混合运算,都会进行转化!
在这里插入图片描述
在这里插入图片描述
注意:char、short使用的时候按照:int去用
在这里插入图片描述
注意:float在使用的时候按照:double去用
纵向箭头:只有在进行混合运算的时候,才会进行转换!

在这里插入图片描述

关于运算符

在了解运算符的时候,给大家教一个口诀,大家很快就能记住常用的运算符了。
单算移关与,异或逻条赋

单目运算符,算术运算符,左移右移,关系运算符、按位与、异或 、按位或、逻辑运算符、条件运算符、赋值
以上的运算符希望大家可以多多了解。

输入输出

1输出
printf(“格式控制串”,输出表);
格式控制串:原样输出的内容 + 格式化符
输出表:输出的内容
注意:输出的内容要和格式化符一一对应!!!
整型:
%d:十进制的整数
%o:八进制
%x %X:十六进制
#:自动在八进制和十六进制前加上前缀
%u:以无符号的整型
%hd:short类型
%ld:long类型
%c:字符型
浮点型:
%f:float类型
%lf:double类型
%g:选择小数和指数中比较合适的一种情况进行输出
%e:指数形式
在这里插入图片描述

输入
scanf(“格式控制串”,地址表);
格式控制串:原样输入的内容+格式化符
地址表:&+变量名(你要给哪片空间去输入)
在这里插入图片描述
注意:
1、scanf的格式控制串中,不要去加多余的修饰语,如果要加,原样输入
2、如果输入“%d%d”时要给多个变量进行赋值,在格式控制串之间没有多余的修饰语时,以空格,回车,tab作为第一个变量输入结束的标志
3、全部输入结束后,必须以回车作为结束符
4、如果是“%c%c”时,在输入时,不能有空格回车tab键,因为空格回车tab也是字符;

字符的输入输出

字符的输入函数:
Int getchar();
//返回值:输入的字符的ascii码值

字符的输出函数:
putchar(int);
//参数:要输出的字符的ascii码值
在这里插入图片描述

三大数据结构

顺序结构
选择结构
循环结构

其中选择结构里面的双分枝结构和多分枝结构,我们后面也会用到,给大家举个例子看看;
双分支选择结构
if(表达式)
{
语句1;
}
else
{
语句2;
}
先判断表达式是否成立,如果成立,就执行语句1,否则,执行语句2;
案例:输入年份,输出该年是平年还是闰年
在这里插入图片描述

多分支if选择结构
If(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
Else if(表达式3)
{
语句3;
}
。。。
Else if(表达式n-1)
{
语句n-1;
}
Else
{
语句n;
}
从上往下,依次去判断每个表达式是否成立,如果成立,就执行对应的语句
案例:输入一个成立,判断成绩的等级
85-100:AAAAAAA
70-85: BBBBBBBB
60-70: CCCCCCCC
60以下:DDDDDDD

在这里插入图片描述

switch语句也是我们常用的语句之一。
Switch(表达式)
{
Case 标号1:
语句1;
Case 标号2:
语句2;
Case 标号3:
语句4;
。。。。
Case 标号n-1:
语句n-1;
Default:
语句n;
}
在这里插入图片描述
循环结构
2.3.1 for循环
for(表达式1 ;表达式2 ;表达式3)
{
//循环体;
}
表达式1:循环的起始条件
表达式2:循环的终止条件
表达式3:循环变量的变化
先执行表达式1;然后判断表达式2是否为真,如果为真,则执行循环体,然后执行表达式3,以此反复,直至表达式2为假,跳出循环!

大家记住这个图i就可以了

案例:用for循环实现1-100之和

在这里插入图片描述
while语句
While(表达式)
{
循环体;
}
判断表达式是否成立,如果成立,则执行循环体,否则,跳出循环

do…while语句
do
{
//循环体
}while(表达式);
先执行循环体;判断表达式是否成立,如果成立,则执行循环体,否则,跳出循环;

冒泡排序

思想:从左往右,两两依次比较,如果前一个数比后一个数大,就交换位置,反之,不变!

在这里插入图片描述
里面用红色圈起来的就是我们需要记住的规律,后面可以直接套用

字符串的处理函数

strlen、strcpy、strcat、strcmp
第一步:添加头文件:#include <string.h>
第二步:函数名(参数);

求字符串的长度
strlen(数组名);

字符串的拷贝
Strcpy(数组1,数组2/字符串);

字符串连接函数
Strcat(数组1,数组2/字符串);

字符串的比较函数
Strcmp(数组1/字符串1,数组2/字符串2);

指针

指针是一种数据类型,它是一种保存地址的数据类型(%p打印出来的地址编号)

  定义::Int *     p;

在32os中:所有的指针都占4字节
在这里插入图片描述

在64os中,所有的指针都占8字节

在这里插入图片描述

二级指针

指针的指针(地址)
二级指针的内存空间中保存的是一级指针的地址
定义: Int* * pp
在这里插入图片描述
指针指向谁=等价于====指针保存谁的地址

数值指针

定义:**指向数组的指针(*保存数组的地址的指针)
存储类型 数据类型 (
变量名) [元素的个数];
Int (*p)[3];

数组指针和二维数组的关系

在这里插入图片描述

数组指针

概念:元素为指针的数组
定义 存储类型 数据类型 *变量名[元素的个数];
Int * arr[3];
在这里插入图片描述

指针数组和二维数组的关系

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值