C语言知识点总结

结构体

像很多基本数据类型 int, short,long,double,结构体是程序员自己自定义的一种数据类型

直接看例子

struct PERSON{
 
    int age;
 
    char sex;
 
    double score;
 
} xiaoming;

结构体的标签被命名为PERSON,里面包含了三个成员,xiaoming是一个实例变量。

结构体实现较好的封装,就好比Java中定义的一个类。

static和const

static静态成员

1.被static 修饰的变量为存在内存的静态储存区,它的生命周期不会随着函数的调用结束而结束

void test()
{
    static int num = 0;
    num++;
    printf("%d ", num);
}
int main()
{
    int i = 0;
    for (i = 0; i < 10; i++)
    {
        test();
    }
    return 0;
}

这个函数的输出结果应该是是1,2,3,4,5,6,7,8,9,10。因为static 修饰的num每次都值都会存在静态区不会因为函数的调用重新赋值给0。
但是如果去掉static 输出的结果应该是 1,1,1,1,1,1,1,1,1,1,1.因为每次在调用test()的时候num都被初始化为0.

const

1.修饰常变量,说明这个值不能被修改。
2.修饰函数的形参,则形参在函数中不能被修改
3.修饰函数的返回值时候,返回值不能被修改。

总结来说就是把值修饰为常量 不可进行修改

volatile

修饰的关键字强制编译器每次都在内存中直接取出来,而不是从缓存或者寄存器中取出。

由于访问缓存区比直接访问内存的效率要高的多,所以在硬件上会引入cache,这样可以减少直接去内存中直接读取数据的开销,但是这种优化有的时候会造成脏读,比如说多线程操作的时候,线程1拿走了数据进行了操作但是还没返回回来,线程2 又取走了数据。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值