一段代码带你回顾C语言知识点第二篇

2025博客之星年度评选已开启 10w+人浏览 1.2k人参与

使用的编译器为vs2026,大家可以复制并编译,以便更好地学习。

创建first.c,将下列代码复制进去

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>

typedef unsigned int uint;
//typedef的作用是对类型“起小名”,将unsigned int重命名为uint
typedef struct Node
{
    int data;
    struct Node*next;
}Node;
//重命名为Node

//函数:F(x1,x2...)=关于自变量的表达式(理解为工厂,给原材料,给出产品)
int ADD(int x, int y)
//函数的返回类型:int;函数名:ADD;函数参数:x,y;函数体:{...}
{
    int z=0;
    z=x+y;
    return z;
    /*
    return (x + y);
    */
}

void text1()
{
    int a =1;
    //局部变量a,进入其范围创建,出其范围销毁
    //存储在栈区
    a++;
    printf("%d ",a);
}

void text2()
{
    static int a = 1;
    //static修饰的局部变量a,在编译时分配空间,局部变量出作用域后不销毁
    /*本质上static修饰局部变量时改变了变量的存储位置,
    从栈区转移到了静态区(程序的生命周期),
    从而影响了变量的生命周期*/
    a++;
    printf("%d ", a);
}

extern int hole;
extern int s_hole;//无效
extern int text3(int x, int y);//声明外部函数

//定义标识符常量
#define PI 3.14
//定义宏
#define text4(x) (PI*(x)) //宏名:text4;宏参:x,无类型;宏体:(PI*(x))
//宏是完成替换的

int main()
{
    printf("%d\n",ADD(1,2));

    //C语言是结构化的程序设计语言:顺序,选择,循环
    /*
    //选择语句
    int input = 0;
    scanf("%d", &input);
    if (input == 1)
    {
        printf("玩电脑\n");
    }
    else
    {
        printf("玩手机\n");
    }
    */
    //循环语句
    int line=0;
    int sum=0;
    while (line <= 100)
    {
        sum+=line;
        line++;
    }
    printf("%d %d\n",sum,line);
    line=0;

    //数组:一组相同类型元素的集合
    int arr[10]={0,1,2,3,4,5,6,7,8,9};
    //这是有序号的,从0-9,叫数组的下标
    printf("%d\n",arr[8]);
    while (line < 10)
    {
        printf("%d ",arr[line]);
        line+=1;
        if (line == 10)
        {
            printf("\n");
        }
    }

    //操作符
    //1.算数操作符:+,-,*,/,%
    printf("%d\n",7/2);//结果为3
    printf("%.2f\n", 7/2.0);//保留小数点后两位,结果为3.50
    //除号两端均为整数时,执行整数除法;有一浮点数就执行浮点数除法
    printf("%d\n",7%2);//取模,结果为1
    //取模操作符的操作数必须是整数
    //2.移位操作符:<<,>>
    //3.位操作符:&,|,^
    //4.赋值操作符:=,+=,-=,*=,%=,/=,^=,|=,&=,<<=,>>=
    int a =0;//初始化
    a=10;//赋值
    //5.单目操作符:只有一个操作数的操作符
    //!(反,0表示假,非0表示真),-(负值),+(不变),&(取地址)
    //sizeof(操作数的类型长度,单位为字节),~(按位取反)
    //++,--(前置:先++/--,后使用;后置:先使用,后++/--),*
    //(数据类型)强制类型转换
    int arr1[10]={0};
    printf("int类型的变量a的大小为%dbyte\n", sizeof(a));
    printf("int类型的大小为%dbyte\n", sizeof(int));
    printf("数组arr1的大小为%dbyte\n", sizeof(arr1));
    printf("数组arr1的元素个数为%d\n", sizeof(arr1) / sizeof(arr1[0]));//求数组的元素个数
    int b=10;
    int c=b++;//后置,先将b赋值给c,b再自增1
    printf("c=%d\n", c);
    printf("b=%d\n", b);
    printf("%d\n", (int)3.14);
    //6.关系操作符:<,>,<=,>=,!=,==(判断相等,注意区分赋值)
    //7.逻辑操作符:&&(并且),||(或者)
    if (b == 11 && c==10)
    {
        printf("真\n");
    }
    //8.条件操作符(三目操作符):exp1 ?exp2 :exp3
    printf("较大值为%d\n", (b>c ? b : c));
    //9.逗号表达式:exp1,exp2,exp3,...,expn(从左向右依次计算,整个表达式的结果是最后一个表达式的结果)
    printf("表达式结果为%d\n",(c=b+c,b=b-c,b+c));
    //c=21,b=-10,逗号表达式的结果为11
    //10.下标引用[],函数调用(),结构成员 .,->
    printf("arr[0]=%d\n", arr[0]);//arr与0是[]的操作数
    //创建数组时需申请空间,所以需要是常量,而访问时空间已定,可以是变量
    printf("调用ADD函数的结果为%d\n", ADD(1, 2));//ADD,1,2都是()的操作数

    //关键字:
    //for,while,do while,break,continue
    //if else,switch,case,default,goto
    //char,short,int,long,float,double,signed,unsigned
    //enum,struct,union,typedef,void,volatile
    //const,extern,register,static,return,sizeof,auto

    //typedef
    uint num=0;//等价于unsigned int num=0;
    Node n;//等价于struct Node n;

    //static
    //1.修饰局部变量
    int i = 0;
    for (;i < 10;i++)
    {
        text1();
        if (i == 9)
        {
            printf("\n");
        }
    }
    i=0;
    //打印10个2的原因是text1()函数内的a是局部变量
    for (;i < 10;i++)
    {
        text2();
        if (i == 9)
        {
            printf("\n");
        }
    }
    //打印2-11的原因是text2()函数内的a是static修饰的局部变量
    //2.修饰全局变量
    printf("%d\n",hole);
    /*printf("%d\n", s_hole);
    报错,因为s_hole不具有外部连接属性*/
    //3.修饰函数
     int x=2;
     int y=3;
     printf("%d\n", text3(x,y));

    //register寄存器
    //存储设备:寄存器,高速缓存,内存,硬盘
    //速度由快到慢,空间由小到大,造价由高到低
    //诺cpu中央处理器所需的数据大部分能在寄存器找到,那么运行速度就提高了,这就产生了金字塔结构
    register int reg=3;//建议3存放在寄存器中

    //define
    printf("%.2f\n", PI);
    printf("%.2f\n", text4(2));

    //变量的命名:
    //1.有意义。
    //2.字母,数字,下划线组成,不能有特殊字符,不以数字开头

    return 0;
}

创建sec.c,将下列代码复制进去,与first.c在同一工程中。

#define _CRT_SECURE_NO_WARNINGS 
int hole=2025;
//全局变量具有外部链接属性
static int s_hloe=2026;
//static修饰全局变量时,外部链接属性变为内部连接属性,其他源文件就不能使用了

int text3(int x, int y)
{
    return x * y;
}//函数也具有外部链接属性,加上static后就不具有外部链接属性了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值