1.什么是C语言
首先什么是语言?人和人交流的工具。
人和计算机交流的语言就是计算机语言,而最早期的计算机用的是二进制语言(1010001010),你想啊,一句话得用多少个0和1来表示,写起来是极其的痛苦,它就像原始人来的交流,只有顶级的科学家才能看得懂,后来就有了汇编语言,(ADD-000001111)给计算机语言弄一下助记符,这个时候问题是解决了一部分,起码多点人能看懂了,但是但是这助记符也不少啊,记不住,怎么办,这时候B语言和C语言就出现了。后来啊,人们发现,这个C语言用着方便多了,OK,C语言诞生了。初期的C语言不是通用的,那肯定就又有麻烦出现了,程序写出来在这台电脑能用但是到另一台就变味儿了。那怎么办,要不规定一种样式,大家共用,于是就有了国际标准语言。
C语言是一门通用计算机编程语言 广泛应用于底层开发。 C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。(啥是广泛应用于底层开发:看下面这张图底层就是应用层以下的层次,故C语言广泛用于操作系统编译和驱动编译。当然它在其他层也不是不用,只是比较少,eg:早期的WPS就是运用了C语言。)
2.认识C语言结构
//#include <stdint.h>
//int main()
//{
// printf("hello wold!");
// return 0;
//}
#include<stdio.h>//2.头文件
int main()//1.写主函数,int一个main函数
{
printf("hello,kangkang\n");
//3.实现在屏幕上打印信息printf,用printf前先去开头打招呼,引用一个头文件
return 0;//结束语句
}
3.数据类型
首先计算机语言为了解决生活上的问题,生活中遇到很多的数字,列如超市某商品价格15.6(小数),年龄50岁(整数),为了方便程序的编写就有了数据类型。
#include<stdio.h>
int main()
{
//printf("%d\n", 123);//先了解这几个代码的意思
//这里是打印一个整数123的意思,%d可以理解为代词,相当于中文的“它”
//\n换行符的意思
//数据类型分为以下几种
printf("%d\n", sizeof(char));//char,字符型
printf("%d\n", sizeof(short));//short,短整型
printf("%d\n", sizeof(int));//int,整型(可以理解为整数)
printf("%d\n", sizeof(long));//long,长整型
printf("%d\n", sizeof(long long));//long long,更长的整型
printf("%d\n", sizeof(float));//float,当精浮点数
printf("%d\n", sizeof(double));//double,双精浮点数
//int和long的字节数一样,因为C语言规定sizeof(long)>=sizeof(int)就可以了没有要求一定要大于//sizeof,C语言的一个操作符,计算类型或者变量所占空间的大小,单位为字节
return 0;
}
请看图片,后面的数字就是前面数据类型对应的字节个数
问题来了,啥是字节?字节有多大?首先字节是计算机的单位名称。
▲计算机的单位(从小到大排列)
bit(比特位):一个二进制单位的大小(二进制只有0和1两个数);
byte(字节) = 8bit;
kb = 1024byte;
mb = 1024kb;
gb = 1024mb;
tb = 1024gb;
pb = 1024tb;
现在应该知道字节有多大了吧
那为什么那么多数据类型,8个字节内的不能直接用longlong写整数类型吗?道理上能,但是如果字节太小造成了空间浪费,相当于用一个桶池装一杯,所以数据类型的存在起到了杯的量装杯里桶的量装桶里的作用。
4.常量和变量
1.变量
两个数相加的和
作用域和生命周期
局部变量作用域:就是变量所在的局部范围内({}内的意思)
全局变量作用域:整个工程
变量生命周期:变量的创建和销毁之间的时间段
局部:进入局部范围生命开始,出局部范围生命结束
全局:程序的生命周期
2.常量
- 字面上的常量:3.14; “abcd”
- const修饰的常变量
- #define定义的标识傅常量
- 枚举常量
下面例子上的a 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 a不能直接被改变,但是 a本质上还是一个变量的,所以叫常变量。
5.字符串,转义字符和注释
1.字符串--用双引号引起来的一串字符,
#include<stdio.h>
int main()
{
char a[] = "hello";
//字符数组:数组是一组相同类型的元素
//这里的“hello”其实有6个字符,字符串在结尾位置隐藏了一个\0的字符
//\0是字符串的结束标志
char a1[] = "abc";
char a2[] = { 'a','b','c' };
//不存在隐藏\0字符,打印没有终止,但又不知道c后面是什么所以出现乱码
char a3[] = { 'a','b','c','\0'};
//打印字符用%s
printf("%s\n", a1);
printf("%s\n", a2);
printf("%s\n", a3);
return 0;
}
#include<string.h>
#include<stdio.h>
int main()
{//求字符串长度
char a1[] = "abc";
char a2[] = { 'a','b','c' };
char a3[] = { 'a','b','c','\0' };
int len = strlen("abc");//strlen=string length
//使用strlen时要定义一个头文件
printf("%d\n", len);
printf("%d\n", strlen(a1));
printf("%d\n", strlen(a2));
printf("%d\n", strlen(a3));
//a2具有随机性,
}
注:字符串的结束标志是一个\0的转义字符,不算作字符串长度内容
2.转义字符:转变了它原来的意思