目录
1.c语言是什么(非重点)
首先我们先说一下计算机语言,计算机语言现已有上千种(类似C/C++/Java/python)是人与计算机进行交流的语言。
计算机语言的发展是:低级语言(二进制语言,也属于机械语言)-->高级语言(C/C++这一类)
我们的电脑大致分为:上层(应用软件)
下层(操作系统(用于操作硬件)ex:windows/linux/mac;
驱动层;
硬件)
而我们的c语言主要是进行下层的开发,c语言设计目标是提供一种能以简易的方式编译,处理低级储存器,产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
同时,c语言是编译语言,他的主要编译器有很多:Clang,GCC,WIN-TC,MSVC(vs的底层)
而我们见到的python是解释语言,用解释器。
c语言是一种编程语言
2.编写的第一个c语言程序
打开vs-->创建一个新项目(最好放在自己整理的文件夹位置)-->开始编码(可以用DEV c++进行编译)
#include <stdio.h>
int main()
{
return 0;
}
这是C语言中主函数基本形式,其中int main(){return 0;},要求卖main的类型是int类型,也就是整数类型,故在函数内部要return 0,也就是返回一个整数类型。
但在c99之前大多数主函数用的是void类型,也就是无类型,这样就不用return了。
那为什么会将void改为int:原因还是为了程序员调试代码时方便(在C99标准未发布前,一般把main函数定义为void,即无返回值类型,c99标准发布后,里面明确规定定义main时要定义成int型,原因是因为main函数是系统调用的,在main函数运行结束后,要返回一个值给操作系统,以此main函数是否执行正常,如果main返回值为0说明正常结束,否则说明程序运行出错,需要调用一些错误处理)
c语言:(a为一个int类型的赋过值的变量名)(int a=5;)
输出:printf("%d",a);
输入:scanf("%d",&a);
%d 整型输出,
%ld 长整型输出,
%p 输出变量的内存地址,
%o 以八进制数形式输出整数,
%x 以十六进制数形式输出整数,
%u 以十进制数输出unsigned型数据(无符号数)。
%c 用来输出一个字符,
%s 用来输出一个字符串,
%f 用来输出实数,以小数形式输出,
%e 以指数形式输出实数,
%g 根据大小自动选f格式或e格式,且不输出无意义的零。
每个文件(或项目)只能有一个main函数
快捷建(ctrl+k+c 注释,ctrl+k+u 取消注释)
3.数据类型
类型 所占字节
char 字符 1
int 整数 4
short 短整型 2
long 长整型 4
long long 更长的长整型 8
float 单精度浮点数 4
double 双精度浮点数 8
sizeof() 用于查数据类型所占字节
1byte(字节)=8bit 1kb=1024byte
变量与常量:
变量:可无初始值,可变的量,分为全局变量和局部变量(变量的作用域常常从他命名到一个没有前“ { ”与之对应的后“ } ”为止,若一个文件的变量或函数要在另一个文件使用要在另一个文件用extern进行声明
常量:必有初始值,不可变的量分为以下4种:
1.字面常量
2.const 常量 const修饰的本质是变量,但不能直接修改
3.#define定义的标识符常量
4.枚举常量
enum age { 18, 19 };
其中age是创建的枚举名,而18和19是age将来可能要赋的值,也就是将age的取值范围固定,但枚举类型的使用要创建对象。
enum age a=18;
生命周期:从一个变量进入作用域到出作用域
4.字符串+转义字符+注释
字符串用双引号 “ ,字符用单引号 ’。
c语言中没有字符串类型,这与python不同。
有两种命名方式
char a[]="abc";
char b[]={'a','b','c','\0'};
int la=strlen(a);
int lb=strlen(b);
其中这两种是一样的,因为字符串的读取要以'\0'结尾并不打印'\0',所以字符串的定义第一种其abc后自己带有'\0',而第二种要手动的添加'\0'。
如果第二种后面不加'\0'则他的读取是从abc开始一直到遇到'\0',则会出现乱码的情况。
所以字符串以 '\0' 为结束字符很重要
转义字符共有如下:
转义字符 | 意义 | ASCII值 |
\a | 响铃(BEL) | 007 |
\b | 退格(BS),将当前位置移到前一列 | 008 |
\f | 换页(FF),见当前位置移到下一页开头 | 012 |
\n | 换行(LF),将当前位置移到下一行开头 | 010 |
\r | 回车(CR),将当前位置移到本行开头 | 013 |
\t | 水平制表(HT),转到下一个TAB位置 | 009 |
\v | 垂直制表(VT) | 011 |
\\ | \ | 092 |
\' | ' | 039 |
\" | " | 034 |
\? | ?(过去用于区别于三字母词) | 063 |
\ddd | 1到3位八进制数所代表任意字符 | |
\xhh | 十六进制数所代表的任意字符 | |
\0 | 空字符(NUL) | 000 |
注释:1.//.......//
2./*...
...*/
5.选择语句与循环语句
一.选择语句
1.if...else...
if(a>10)
{
printf("%d",a);
}
else
{
printf("a小于10");
}
2.witch(常与enum一起用)
witch(a)
{
case 'A':printf("a是A");break;
case 'B':printf("a是B");break;
default:printf("检测完毕");
}
二.循环语句
1.while
while(a>10)
{
printf("%d",a);
a++;
}
//或者
do{
printf("%d",a);
a++;
}while(a>20);
2.for
for(i=0;i<10;i++)
{
a++;
}
7.数组
一个数组中要放入相同类型的元素。
下标是从0开始的,数组没有赋值的一项,默认为0(不完全初始化 ).
int a[2]={1,2};
int b[3]={1};
int c[]={2,3,4};
c99之前数组的项数只能不输或者用常数,但c99之后项数可以输入一个已经初始化的变量
//c99之前
#define a 10
int list1[10]={1};
int list2[a]={1};
//c99之后
int a=10;
int list3[a];