C语言
C
概述
编译器
介绍
C语言是编译型语言,写出的代码需要通过C的编译器编译成计算机语言才可以被计算机运行
tip: java是编译解释混合语言,写出的代码被jvm虚拟机编译然后被jvm虚拟机解释给计算机
python的解释型语言
编译器及代码编辑器
编译器
GCC:
https://blog.csdn.net/K346K346/article/details/130870292 教程
www.msys2.org
下载安装后, 运行,依次输入
pacman -Syu
pacman -Su
pacman -S --need base-devel mingw-w64-x86_64-toolchain
回车 然后 输入 y
将软件包下载后,将bin目录地址配置到环境变量中
配置后在cmd中输入 gcc -v 能用就代表成功
编辑器
VS CODE:
c语言相关插件:
c/c++ : c语言官方插件
Code Runner:可运行各种语言代码
基本结构
c语言代码文件由 .c 为后缀名 , 使用gcc可以编译
在运行时, main 方法即为代码的入口
如下:
int main(){
retrn 0; //可以省略,当一个函数返回值是int,并且在函数结尾没有写返回值时,编译器会
}
变量
变量用于用一个标记符记录一个值,变量是某个类型的实例化
声明格式: 类型 变量名 = 类型的实例;
使用变量需要先声明, 如 : int value = 0; 即声明了一个整数且值为0,名字为value的变量,之后可以使用value来使用该值
在后面也可以对变量进行从新赋值,但不能再次声明
基本数据类型
int:
整型
int value = 0;
printf("输出:%d",value)
char:
字节
char value = 'a';
printf("输出:%c",value)
float:
单精度浮点型
float value = 1.0;
printf("输出:%f",value); //1.000000 默认是6精度
printf("输出:%.2f",value); //1.09 可通过.l来调整精度
double:
双精度浮点型
double value = 1.0;
printf("输出:%lf",value); //1.000000 默认是6精度
printf("输出:%.10lf",value); //1.0000000000
常量
使用const修饰,该值在声明时就需要被赋值,在声明后无法对该值发生改变
int main(){
const int VALUE = 1;
}
注释
//单行注释
/* 多行注释 */
int main(){
int a =0; //注释
/*
注释
*/
}
条件语句
条件类型
在C99及更高版本的编译器中可以引入 <stdbool.h>库来声明布尔类型,若在C99下也可以使用0或1表示,0为false,1及其他非0值都为true
#include <sdtbool.h>
int main(){
bool is = false;
}
条件判断
== , >= , <= , > , < ,!=
逻辑运算符
&& 逻辑与,只有两边都为真时,结果才为真
|| 逻辑或,只有两边都为假时,结果才为假
! 非,将逻辑结果取反
int main(){
int a=1;
if( (a>=0 && a != 2) || !(a <= 10) ){}
}
if语句
if条件可以嵌套在
#include <sdtbool.h>
int main(){
bool t1 = true;
int t2 = 0; //0代表true
if(t1){ }
if(t2){
}else{ }
if(t2>1){
}else if(3>1){
}else{}//else部分可选,可以省略掉
}
Switch语句
**限制:**
匹配的值只能是整数类型以及可以被隐式转换为整形的类型(char类型),浮点数类型就不可以使用
case后面的值不能重复
int main(){
int a = 0;
switch(a){
case 1:
a = 2;
break;//若没有break会穿透下去
case 2:
a = 3;
break;
default: //都没匹配到就执行这里,可以省略不写
a = 4;
}
}
循环
while循环
int main(){
int a =0;
while(1 > 2){
a++;
}
do{//先执行一次再判断
++a ;
}while(1 > 2);
}
for循环
int main(){
for(int i = 1; i <= 5;i = i + 1 ){ //可以简写成 i++,i--
}
}
语句控制
break
直接结束本次循环
continue
在continue处结束语句,进入下一次循环
数组
声明:数据类型 变量名[数字大小] = {数据1,数据2}; //数据个数不能超过定义数组大小
获取: 变量名[数据位置] //索引从0开始
若不对数组赋值,则各个索引的值为该数组类型的默认值
int main(){
int arr[5] = {}
int arrs[5] = {1,2,3,4,5,6}
arrs[5] = 7;
}
字符串
声明:
char 变量名[字符串长度] = {'a','b','/0'} //最后必须以 \0 空字符结尾
char 变量名[长度] = "abc" //结果是生成一个 {'a','b','c',以按长度\0结尾}的字符串
#include <stdio.h>
int main(){
char str[3] = {'a','b','\0'}
char strs[5] = "abc"; // {'a','b','c','\0','\0'};
printf("%s",strs);
}
指针
在内存中内存被分块,每块内存1字节,每块内存都有一个地址指向他,指针就是指向这个地址
数据类型* 指针名 = 地址; 即可声明一个指针,在对指针赋值时,要对赋予这个指针的变量使用 &取值符获取变量地址
在使用指针是, *指针名 即可获取指针指向的地址的值,这里的 * 叫解应用运算符,可以让我们能够操纵指针指向的值
int main(){
int* p = NULL;//初始化若没有指定地址,则用null,不然默认地址可能会导致错误
int a = 1;
p = &a;//对变量a &获取地址值,将地址值赋值给p
printl("%d",*p);//解引用,获取p指向的地址值所存储的真实值
}

浙公网安备 33010602011771号