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指向的地址值所存储的真实值
}
posted @ 2025-06-14 00:06  LittleD-  阅读(23)  评论(0)    收藏  举报