目录
引语
计算机语言的发展
一.c语言的定义
第一个c语言程序
二.数据类型
1.数据类型大小
计算机单位换算👇
三.常见的格式化输出符号
1.float与double的注意事项
2.单精度浮点数与双精度浮点数的区别
四.变量和常量
1.变量书写的格式
2.变量的命名
关键字👇
3.变量的分类
1.局部变量:("{}")里面,或者函数内部的都是局部变量
2.全局变量:("{}")外部的,
4.变量的作用域和生命周期
常量
1.字面常量
2.const修饰的常变量
3.define定义的标识符常量
4.枚举常量
五.字符串
六.scanf函数
1.单个变量的输入:
2.数组的输入:
3.scanf函数的返回值
例:输入俩个数字,然后进行求和
七.转义字符
八.ASCII值
九.注释
十.语句
1.循环语句while
1.格式
2.选择语句(if)
3.if与while混合
十一.函数
1.格式
程序实操:用函数实现俩个数字和
十二:数组
1.定义
2.数组是通过下标来访问的
3.数组的创建
4.数组的遍历(while循环)
5.数组的遍历+并加修改每一项的值
十三.操作符
1.c语言中除法问题
2.逻辑操作符
3.C语言中的真假
4.单目操作符:
1.用!程序如下👇
2.用sizeof计算数据可占空间大小
3.sizeof和strlen的区别
4.强制类型转换操作符()
5.下标引用,函数调用操作符
6.前置++和后置++的区别
十四:指针
1.如果想要了解指针,需要先对内存进行理解
2.打印指针(地址)
3.指针的大小
结尾:互三,你的支持是我前进最大的动力。限于水平,本篇文章不足之处在所难免,请大家指正,谢谢大家。
引语
俗话说:没吃过猪肉,但要见过猪跑,这篇文章将会串讲c语言得内容,但不深入,只是让您了解c语言基本内容。
计算机语言的发展
对二进制使用助记符进而产生了汇编语言
一.c语言的定义
c语言是一个面向过程的语言,广泛应用于底层开发,其编译器主要有Clang,GCC,MSVC 等。
ANSI C(美国国家标准 c)是c语言最初的语言标准,主要使用C89,C90
编译器的含义:
可以把语言转换成二进制(计算机可识别的语言)
图片的理解:
驱动层控制操作系统,从而实现对电脑硬件的控制。👆
第一个c语言程序
引入知识点:
printf(打印)是一个库函数,需要有头文件 #include<stdio.h>
例:打印Hello World👇
1.main函数是程序的入口,c语言程序是main函数第一行开始执行的,但是main函数有且仅有一个。int main() 表示main函数的返回值是int(整形)
2.return 0;在main函数中有特殊的定义,主要用于表示程序的退出状态,其中 0 通常表示程序执行成功,没有错误,这个人return0并没有深入。
#include<stdio.h>
int main()
{printf("Hello World");return 0;}
注意:
1.所有的标点符号必须都是英文符号,否则会报错。
2.{ }表示大括号表示里面代码的有限范围
二.数据类型
注意:
在c语言中没有字符串类型,如果要输出字符串,则是通过字符串数组来进行
1.数据类型大小
sizeof函数可以用来进行数据空间类型大小计算
#include<stdio.h> int main() {printf("%zd",sizeof(char));printf("%zd",sizeof(short));printf("%zd",sizeof(float));printf("%zd",sizeof(double));printf("%zd",sizeof(long));printf("%zd",sizeof(long long));return 0; }
注意:sizeof要用%zd来进行格式化输出
代码运行👇
这些数据类型的单位是字节(byte)
注意:
C语言规定:sizeof(long)>=sizeof(int)
其中
计算机单位换算👇
1byte = 8bit
1KB=1024 byte
1MB=1024KB
1GB=1024MB
1TB =1024GB
三.常见的格式化输出符号
1.float与double的注意事项
(1.要用%f来打印float类型的数字
如果是float类型,数据后边要加上f
若是double类型,则不需要加东西,因为编译器默认数字后面是double类型
float a= 3.14f;
printf("f\n",a);
(2.要用%lf来打印double类型的数字
double a=3.14;
printf("lf\n",a);
语法中默认浮点数打印6位小数,但如果再%后面加上.#f,则会确切地保留几位小数
2.单精度浮点数与双精度浮点数的区别
虽然double的有效位数是15到16位,但由于编译器的限制,小数后面最多保留6位小数,其余四舍五入。
四.变量和常量
1.变量书写的格式
类型+变量名="####"
第一种方式
定义了一个变量a,并给变量初始化为0;
int a = 0;
第二种方式
没有给变量初始化,并且定义了多种变量a,b,c
int a,b,c;
2.变量的命名
1.只能由数字,字母,下划线(_)组成
2.不能以数字开头,且只能以字母,下划线(_)开头
3变量名不能与关键字重复。
4.变量名区分大小写
5.变量名不能超过63个字符。
关键字👇
3.变量的分类
1.局部变量:("{}")里面,或者函数内部的都是局部变量
2.全局变量:("{}")外部的,
#include<stdio.h>
int a =10;
int main()
printf("%d ",a)
{int b =20;printf("%d ",a);printf("%d ",b);
return 0;
}
程序运行结果👇
注意:
在局部变量与全局变量冲突下,局部变量优先
4.变量的作用域和生命周期
常量
常量基本上分为以下几种:
1.字面常量
2.const修饰的常变量
3.#define定义的标识符常量
4.枚举常量
1.字面常量
2.const修饰的常变量
被const修饰的那个变量,值不会发生改变
3.define定义的标识符常量
4.枚举常量
枚举(enum
)是一种用户定义的数据类型,用于定义一组命名的整数常量。使用枚举可以使代码更具可读性,因为它允许通过具名常量而不是数字来表示特定的值。
注意:
每个枚举常量在默认情况下都被赋予一个从 0 开始的整数值。可以手动为枚举常量指定值
五.字符串
在c语言,用 ' '来引导字符
用 " "来引导字符串,字符串结束的标志是\0
注意这个程序👇
注意:
为什么arr2 后面有烫烫烫,因为arr2后面没有\0结束标志,所以会一直读下去,因此会出现莫名其妙的东西,只要在后面加上\0,这个程序就正常了
六.scanf函数
在 C 语言中,scanf
函数用于从标准输入读取数据并存储到变量中。有关于scnaf中的&符的应用
1.单个变量的输入:
2.数组的输入:
注意:
如果你用的是vs编译器,使用scanf函数会出现报错
在代码的第一行加上这个代码就不会报错👇,或者使用scanf_s
3.scanf函数的返回值
如果读取失败,则返回的是EOF(它的值是-1)
代码如下
int main()
{int a = 0;int b = 20;int ret = scanf("%d", &a);printf("%d\n", a);printf("%d\n", ret);return 0;
}
程序运行👇
例:输入俩个数字,然后进行求和
代码如下
#include<stdio.h>
int main()
{int a = 0;int b = 0;int sum;scanf("%d %d", &a, &b);sum = a + b;printf("%d ", sum);return 0;
}
程序实操👇
七.转义字符
八.ASCII值
ASCII的值有效范围: 0~127
先把八进制数字→十进制数字→根据ASCII表输出
程序如下👇
这个'\130'是转义字符
将十六进制的数字→十进制数字→根据ASCII表输出
程序如下👇
这个'\x35'是转义字符
九.注释
在C语言中,第一种注释方法是 //
快捷键:注释:ctrl+K+C,取消注释:ctrl+K+U
第二种注释方法
/* ####### */
十.语句
1.循环语句while
1.格式
while(条件)
{
内容
}
//打印1到100的数字
int main()
{int i = 1;while (i <= 100){printf("%d ", i);
//注意细节:这个%d后面有个空格,这个可以在打印数字时有个空格
//,使其不紧凑i++;}return 0;
}
代码运行👇
2.选择语句(if)
格式:
if(条件)
{
内容
}
else if(条件)
{
内容
}
else
{内容
}
其中else if 可以很多,不是只能有一个👆
代码👇
int main()
{int input = 0;printf("袁浩展是不是大帅哥(1 \ 0)\n");scanf("%d", &input);if (input == 1){printf("袁浩展是大帅哥");}else if (input == 0){printf("袁浩展不是大帅哥");}return 0;
}
程序运行
3.if与while混合
int main()
{int line = 0;printf("袁浩展最帅");while (line < 20000){printf("敲代码:%d\n",line);line += 1;if (line == 10000){printf("袁浩展坠入爱河");break;//break用来终止循环//也就是跳出while循环}}return 0;
}
十一.函数
1.格式
程序实操:用函数实现俩个数字和
对代码的理解👇
你通过scanf输入的num1,num2(实参)值分别赋给了 x ,y
return z 就是把z的值返回到了函数调用部分,也就是Add(num1,num2)中
👇
最后打印就完成了该程序
十二:数组
1.定义
一组相同类型元素的集合。
1.[##]指放的是元素个数,且数组大小必须是常量
2.如果数组右边有数字,那么arr[ ]可以不放数字,因为已经初始化了。
2.数组是通过下标来访问的
3.数组的创建
#include<stdio.h>
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };printf("%d ", arr[3]);return 0;
}
程序运行👇:数组通过下标访问
4.数组的遍历(while循环)
int main()
{int arr[] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;while (i < 10){printf("%d ", arr[i]);i++;}return 0;
}
程序运行
5.数组的遍历+并加修改每一项的值
int main()
{int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };int i = 0;int j = 0;while (j < 10){scanf("%d", &arr[j]);j++;}while (i < 10){printf("%d ", arr[i]);i++;}return 0;
}
代码的运行👇
十三.操作符
1.c语言中除法问题
第一个printf是直接相除不保留小数,也就是7
第二个printf是保留小数(在任何数字上加上.0)的,也就是7.5
取模操作符%左右俩边的数字不能加上.0
2.逻辑操作符
&&就是and的意思,||就是or的意思
3.C语言中的真假
在c语言中,0为假,非0为真
4.单目操作符:
1.用!程序如下👇
2.用sizeof计算数据可占空间大小
每个整形占4个字节,因为有10个数字,所以是40个字节
3.sizeof和strlen的区别
strlen
是求字符串长度,是求\0之前的字符串(每个字符串都以\0结尾)
sizeof
是求数据所占空间大小,包含了\0
int main()
{char arr1[] = "abcdef";char arr2[] = "abcdef";printf("%zd ",sizeof( arr1));printf("%d ", strlen(arr2));return 0;}
程序运行👇
4.强制类型转换操作符()
5.下标引用,函数调用操作符
下标引用操作符[ ]
函数调用操作符()
6.前置++和后置++的区别
前置++
先给a加上1,此时a==11,后把a的值赋值给b
int main()
{int a = 10;int b = 10;b = ++a;printf("a=%d\n", a);printf("b=%d\n", b);return 0;
}
程序运行👇
后置++
先把a的值赋给b,然后a的值+1,所以a=11,b=10
十四:指针
1.如果想要了解指针,需要先对内存进行理解
内存被划分为多个内存单元(每个内存单元占1个字节),内存单元进行编号,被编号的内存单元叫做地址,在c语言中,地址就叫做指针
如果您的电脑是32位操作系统
32位操作系统可以把他当作于32根地址线,因为c语言是以二进制计算的(0或1),所以地址线有2的32次方的情况,也就是有2的32次方的内存单元,大小也就是2的32次方的byte(字节)。
如果换算成GB的话,也就是4GB,所以说你最多能访问4GB的内存
2.打印指针(地址)
理解代码👇
对指针的理解
3.指针的大小
在c语言中:
指针变量的大小取决于地址的大小
32(x86)位平台下地址是4个字节
64(x64)位平台下地址是8个字节
代码如下:
64位操作系统
int main()
{printf("%zd\n", sizeof(char*));printf("%zd\n", sizeof(short*)); printf("%zd\n", sizeof(char*));printf("%zd\n", sizeof(long*));printf("%zd\n", sizeof(long long*));printf("%zd\n", sizeof(float*));printf("%zd\n", sizeof(double*));return 0;
}
运行结果
32位操作系统
注意:
操作系统在红线这换