初识c语言
前面的话:
这篇博客是对c语言大框架的一个总结,适合想要复习或者初步认识c语言的人,每个部分尽量提及但不会过于详细,想深入了解的可以自行搜索资料或者关注我下面的博客发布,也可以与我一同探讨,不多说了,我们进入初始c语言
第一部分什么是c语言以及第一个c语言程序不多说了,直接进入,数据类型。
1,数据类型
char //字符数据类型 所占空间1字节
short //短整型 所占空间2字节
int //整形 所占空间4字节
long //长整型 所占空间4字节
long long //更长的整形 所占空间8字节
float //单精度浮点数 所占空间4字节
double //双精度浮点数 所占空间8字节
那么C语言有没有字符串类型?
答案是没有;
那么这么多的类型有什么用呢?
答案是为了表达生活中的多种情况
我们改如何来使用这些类型呢?
char ch = 'z';
int weight = 120;
int salary = 20000;
上面的代码我们定义了一个字符来表示名字,体重,工资等,这既是我们使用数据类型最常见的一种.
这就涉及到了创建变量
2.变量
上述代码中ch,weight,salary都是我们创建的变量名,变量名的创建只要不是c语言的关键字就可以。
关于变量还有两个概念那就是:
(1)全局变量
int arr=10;
int main()
{
printf("%d",arr);
return 0;
}
- 这就是全局变量,在main函数外定义的变量,在整个程序都可以引用,当然若是跨文件引用要声明一下关键字是extern
(2)局部变量
int main()
{
int arr;
return 0;
}
- 在大括号内部也即是代码块内部定义的变量我们就叫做局部变量,这里引出了一个点就是如果局部变量和全局变量同名,那么在局部变量的范围内,同名的全局变量不起作用。但是避免混淆我们一般不会这样写。
2.2变量的作用域和生命周期
- 关于作用域:通俗讲就是变量在这个范围呢才有用出这个范围就失效了。
-
- 局部变量的作用域就是局部变量的那个大括号里面
-
- 全局变量的作用域就是整个程序
- 关于生命周期:就是变量从创建到销毁的这个时间,当然他不是说一个绝对的时间多少毫秒而是相对的程序运行时的一个相对时间
-
- 局部变量的生命周期就是进入作用域生命周期开始,出了作用域生命周期结束
-
- 全局变量的生命周期就是整个程序执行的期间。
当然生活中还有些不变的量比如性别等,这便引出了我们的常量。
- 全局变量的生命周期就是整个程序执行的期间。
3.常量
首先是常量是有命名规则的不可随意定义常量。
1.第一种便是整形常量,实际就是十进制八进制和十六进的一些整数
2.第二种是实型常量,也就是浮点数。例如,0.246 也可以写成 . 246
必须有小数点,但是小数点前后的0可以省略。
第二类浮点数就是指数形式。格式如下
尾数E指数部分
或者小写的e都是可以的这个地方要注意了,尾数部分可以是小数或者整数但是右边指数部分必须为整数,正负都可以。举例:
正确的:135e2、135e-2、.135e4
错误的:e2、3.5e2.4、.e、e5、e
3.第三就是字符常量
关于字符常量都是用单引号括起来的包括转义字符等都是字符常量。
4.就是字符串常量
用双引号引起来的就是字符串常量注意双引号直接可以神魔都不放也是可以的。
5.const修饰的常变量
被const修饰的变量具有常量的属性不可以被更改了,具有了只读性。但他本质上还是个变量;举例:
int main()
{
const int n=10;
int arr[10]={0};
int brr[n]={0};
return 0;
}
- 实际你在创建时发现brr的创建会报错,这就说明了const修饰的n具有常量属性但是本质上还是个变量。
6.#define定义的标识符常量
#define MAX 100
printf("%d",MAX);
这段代码常量100被替换成了MAX就是标识符常量
6.枚举常量
enum color
{
RED,
BLUE,
GREEN
};
其实枚举常量都有一个值RED是0;BLUE是1;这个值可以被修改,但是从上到下还是默认以此增加的。
4.字符串,转义字符,注释
- 字符串是什么呢,双引号引起来的一段字符就是字符串。这里要注意字符串的末尾会自动加上\0来作为字符串的结束标志。如果没有\0就可能造成我们的越界访问。
- 转义字符,顾名思义就是转变原来的意思。转义字符有很多这里着重记住两个
\ddd //这里表示三个八进制的数字
\xdd //这里表示的是两个十六进制的数字
在使用的时候比如打印,是先将八进制的数字转换成十进制的数字然后将看作ASCII码值打印出字符,十六进制都一样,理论上只要数字不超过ASCII码值的范围几位都是可以的。
- 注释,直接看演示L:
#include<stdio.h>
int main()
{
printf("hello world\n");
}
//int main()
//{
// printf("hello world\n");
//}
/*int main()
{
printf("hello world\n");
}*/
上面有两中注释风格一种是/* … 这是c语言的注释格式,优点是可以一次注释很多行,缺点是不可以嵌套注释,遇到结束标志… */就会结束。
另一种就是c++的注释风格//双斜杠可以随便在哪一行的开头注释,可以嵌套,但是注释一大段代码会比较麻烦。
5,选择语句
生活中总有选择,c语言中当然也有啦
1,if()语句
格式:
if(判断条件为真执行1语句为假执行2)
{
1
}
else
{
2
}
if()
{
}
else if()//这是c语言多分枝的一个结构
{
}
else
{
}
if()//省略else也是可以的
{
}
2,switch
switch适用于多分枝结构比如输入1打印星期1…这就适合用switch语句了,如果用if语句要写七个语句 很麻烦。
switch(input)
{
case 1:
printf("星期一\n");
break;
.....
...
..
.
case 7:
printf("星期日\n");
}
这就是switch的基本使用语法。要注意input是整形变量;
6.循环语句
循环有do while循环,while循环,以及for循环。使用最多的是for循环再者是while循环,do while循环使用很少;
1,for循环
int i=0;
for(i=0;i<10;i++)//第一个表达式是初始化,只会执行一次,第二个就是判断部分每次执行完之后都会与表达式二进行比对为真则继续循环为假则结束循环,第三个表达式就hi是调整部分。
{
循环体;
}
2,while循环
int i=0;
while(i<10)//判断条件
{
循环体;
i++;//调整部分
}
3,do while循环
如其名上来先干一次,先执行一次循环体,再去判断。
int i=0;
do{
循环体;
i++;//调整
}while(i<10);//要注意这里还有个分号,这个部分就是判断部分
7, 函数
关于函数分为自定义函数和库函数。
库函数就很简单printf,scanf就是库函数。
自定义函数如下:
int add(int a,int b)
{
return a+b;//这是返回值,要与上面定义的函数返回类型相同。
}
自定义函数设计,要注意函数返回值函数参数,当然都可以没有哈,若是没有参数和返回值就设置成void类型。函数设计要遵循高内聚低耦合,尽量功能简单减少与外部代码的关联,这样可以增强代码的可复用性,更好的可移植性。
8,数组
数组就是同类型元素的集合;
1,数组的定义
int arr[10]={0};//这就是定义了一个包含十个整形元素的数组并且初始化为全0;
2,数组的下标是从0开始的;
3,数组的使用
下面我使用数组存10个元素并且打印出来:
#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 ",arr[i]);
}
return 0;
}
上面十个元素的数组10 的下标是9;
9,操作符
关于操作符,我这里只是列举不一一介绍了后面会出专门的博客来详细解释。
//算术操作符
+ - * / %
//移位操作符
>> <<
//位操作符
& ^ |
//赋值操作符
= += -= *= /= &= ^= |= >>= <<=
//单目操作符
! 逻辑反操作
- 负值
+ 正值
& 取地址
sizeof 操作数的类型长度(以字节为单位)
~ 对一个数的二进制按位取反
-- 前置、后置--
++ 前置、后置++
* 间接访问操作符(解引用操作符)
(类型) 强制类型转换
//关系操作符
>
>=
<
<=
!= 用于测试“不相等”
== 用于测试“相等”
//逻辑操作符
&& 逻辑与
|| 逻辑或
//条件操作符
exp1 ? exp2 : exp3
//逗号表达式
exp1, exp2, exp3, …expN
//下标引用、函数调用和结构成员
[] () . ->
10,常见的关键字
见见就好后面也会单独介绍不然篇幅控制不住希望理解。
这是常用的32个关键字在c99中新增加的5个关键字不在其中;
11,#define定义的标识符常量和宏
#define MAX 100
#define ADD ((x)+(y))
#include<stdio.h>
int main()
{
printf("%d",MAX);//这里打印的就是100,#define定义的标识符或者宏实际都是用后面的一段代替前面的,所以在定义宏的时候要注意给每个替换量加上括号。
printf("%d",ADD(2,3))//这里打印的是5,这就是宏,要注意宏不可以嵌套
return 0;
}