一、什么是C语言
C语言是一门通用计算机编程语言(高级语言),广泛应用于底层开发,面向过程,编译器主要有:Clang、GCC、MSVC (VS2019的集成开发环境)、Turbo C等。
二、第一个C语言程序
#include <stdio.h>
int main()
{
printf("Hello world\n");
return 0;
}
//printf - 库函数 - 在屏幕上打印信息,库函数的使用需要头文件stdio.h
//主函数main - main函数是程序的入口
//写的C语言代码都是从main函数的第一行开始执行的
//一个工程中main函数有且仅有一个且main函数必须有
//C语言中所有的字符都是英文的字符
//主函数的定义
//方法一: int main() //最常用写法
//方法二: void main() //古老的写法
//方法三:int main(void) //void是在明确表示main函数不接收参数
//方法四:int main(int argc,char*argv[])//int argc,char*argv[]是在指定main函数的参数
在VS上写代码的步骤:
1.创建项目:空项目名称要有意义,不能使用中文,不要使用空格,不要使用特殊字符
2.新建源文件.c
3.写代码
三、数据类型
1.数据类型的分类
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数
//计算各数据类型所占的字节:sizeof
#include <stdio.h>
int main()
{
printf("%d\n,sizeof(char));
printf("%d\n,sizeof(short));
printf("%d\n,sizeof(int));
printf("%d\n,sizeof(long));
printf("%d\n,sizeof(long long));
printf("%d\n,sizeof(float));
printf("%d\n,sizeof(double));
printf("%d\n,sizeof(long double));
return 0;
}
//sizeof(long long)>=sizeof(long)>=sizeof(int)>sizeod(short)>sizeof(char)
2.数据类型的使用
char ch='w';
int weight=120;
int salary=20000;
四、变量、常量
变量:值改变的量 常量:值不变的量
1.定义变量的方法
//type(类型) name(名字)
int age = 150;
2.变量的命名
只能由字母(包括大小写)、数字、下划线(_)组成
不能以数字开头
长度不能超过63个字符
变量名中区分大小写
变量名中不能使用关键字
3.变量的分类
局部变量:{ }内部定义的变量
全局变量:{ }外部定义的变量
当局部变量和全局变量同名的时候,局部变量优先使用
#include <stdio.h>
int global = 2019;//全局变量
int main()
{
int local = 2018;//局部变量
int global = 2020;//局部变量
printf("global = %d\n",global);
return 0;
}
//上面定义的局部变量global是没有问题的
4.变量的使用
#include <stdio.h>
int main()
{
int num1=0;
int num2=0;
int sum=0;
printf("输入两个操作数:>");
scanf("%d %d",&num1,&num2);
sum=num1+num2;
printf("sum=%d\n",sum);
return 0;
}
//输入语句:scanf
//输出语句:printf
注:在VS中使用scanf会报错 scanf_s是VS独有的
所以在VS中使用scanf需要有:_CRE_SECURE_NO_WARNINGS方法一:
在使用scanf函数的.c文件的第一行写:#define _CRE_SECURE_NO_WARNINGS 1
但是每个源文件(.c)需要手动添加比较麻烦
方法二:在VS中有一个文件 newc++file.cpp 找到此文件,在这个文件中加入
#define _CRE_SECURE_NO_WARNINGS 1 以后新建的代码就会自动出现这一行代码
方法三:#pragma warning(disable:4996) 其中4996所在位置是代码报错的错误代码号,这里的4996只是举例说明。
5.变量的作用域与生命周期
(1)作用域:哪里可以使用这个名字,哪里就是这个名字的作用域
-全局变量的作用域是整个工程
-局部变量的作用域是变量所在的局部范围 定义往后的代码都OK
(2)生命周期:
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
-局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
-全局变量的生命周期是:整个程序的生命周期
//声明外部符号:extern 可以使用外部的值/内容
6.常量
C语言中的常量分为以下几种:
-
字面常量 - 例如:100 20.0 3.14 'a' 即直接写出的值
-
const修饰的常变量 - 常属性的 - 可以修饰变量,即被const修饰的变量变成了常量,不能被修改
-
#define定义的标识符常量
-
枚举常量 - 一一列举
#include <stdio.h>
int main()
{
const int a=10;//a就是const修饰的常变量,但本质上a还是变量(在C++中a就是常量了)
printf("a=%d\n",a);
a=100;
printf("a=%d\n",a);
return 0;
}
#include <stdio.h>
//举例
enum Sex//enum是枚举的关键字
{
MALE,//0
FEMALE,//1
SECRET//2
};
//括号中的MALE,FAMALE,SECRET为枚举常量
int main()
{
//字面变量演示
3.14;//字面常量
1000;//字面常量
//const修饰的常变量
const float pai=3.14f;//这里的pai是const修饰的常变量
pai=5.14;//是不能直接修改的
//#define的标识符常量演示
#define MAX 100
printf("max=%d\n",MAX);
//枚举常量演示
printf("%d\n",MALE);
printf("%d\n",FEMALE);
printf("%d\n",SECRET);
//注:枚举常量的默认是从0开始,依次向下递增1的
//结果展示:0 1 2
return 0;
}
五、字符串+转义字符+注释
1.字符串
由双引号引起来的一串字符称为字符串字面值,简称字符串。
注:字符串的结束标志是一个\0的转义字符。
在计算字符串长度的时候\0是结束标志,不算作字符串内容,统计个数时不统计在内。
#include <stdio.h>
int main()
{
char arr1[] = "bit";//字符串
char arr2[] = { 'b','i','t' };//字符组成的字符串
char arr3[] = { 'b','i','t','\0' };
printf("%s\n", arr1);//3个字符
printf("%s\n", arr2);//随机值
printf("%s\n", arr3);//3个字符
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "bit";//字符串
char arr2[] = { 'b','i','t' };//字符组成的字符串
char arr3[] = { 'b','i','t','\0' };
printf("%d\n", strlen(arr1));//3个字符
printf("%d\n", strlen(arr2));//随机值
printf("%d\n", strlen(arr3));//3个字符
return 0;
}
strlen是库函数,用来求字符串长度,统计的是字符串中\0之前的字符个数
2.转义字符
转义字符顾名思义就是转变意思
转义字符 | 释义 |
\? | 在书写连续多个问号时使用,防止他们被解析成三字母词 |
\' | 用于表示字符常量' |
\'' | 用于表示一个字符串内部的双引号 |
\\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\a | 警告字符,蜂鸣 |
\b | 退格符,相当于键盘上的backspace删除键 |
\n | 换行 |
\r | 回车 |
\t | 水平制表符(即相当于键盘上的tab键,对齐时会用到,算上原来的等于四个字节的位置) |
\ddd | ddd表示1-3个八进制的数字。如:\130转换成的字符为X |
\xdd | dd表示1-2个十六进制的数字。如:\x30转换成的字符为0 |
注:1.三字母词为:??( -- [ 和??) -- ] ,在古老编译器里可能会出现这种情况。
2.八进制转换成十进制 例如:八进制中的130转换成十进制为 8的2次方*1+8的1次方*3+8的0次方*0=64+24+0=88 在ASCII表中对应字符X
十六进制转换成十进制 例如:十六进制中的30转换成十进制为16的1次方*3+16的0次方*0=48 在ASCII表中对应字符0
3.转义字符在计算字符串长度中为1。
#include <stdio.h>
#include <string.h>
int main()
{
printf("%d\n", strlen("c:\test\111\test.c"));//13个字符
printf("%d\n", strlen("c:\test\181\test.c"));//15个字符
return 0;
}
3.注释
作用:1.代码中有不需要的代码可以直接删除,也可以注释掉。
2.代码中有些代码比较难懂,可以加一下注释文字。
注释有两种风格:
1.C语言风格的注释 /*xxxxxx*/ 缺陷:不能嵌套注释
2.C++风格的注释 //xxxxxx 可以注释一行也可以注释多行 键盘按键:ctrl+shift+/