zoukankan      html  css  js  c++  java
  • 【C】Re04

    一、类型限定符

    extern 
    声明一个变量,extern声明的变量没有存储空间
    
    const 
    定义一个常量,该常量必须赋值,之后且不允许更改
    
    volatile 
    防止编译器优化代码???
    
    register 
    定义寄存器变量,提高代码效率
    register是建议型的指令,不是一般的命令型指令
    在CPU存在空闲寄存器的情况下,register生效
    反之寄存器没有空闲,就无法起效

    volatile样例:

    void volatileDemo() {
        // 不使用volatile声明 编译器将舍去中间的赋值,直接从10 -> 51
        int a = 10;
        a = 11;
        a = 1;
        a = 31;
        a = 41;
        a = 51;
    
        // 使用volatile声明 编译器将保留中间的赋值
        volatile int b = 10;
        b = 11;
        b = 1;
        b = 31;
        b = 41;
        b = 51;
    }

    register的意思:

    把该变量注册到寄存器中,如果空闲寄存器发现,则触发生效,变量立刻寄存放入

    等待CPU计算处理

    但是注意这个问题:

    因为该变量可能存放到寄存器中,所以我们无法使用&获取该变量的地址

    因为&是从内存中获取的

    三、数组

    数组名称用法:

    使用sizeof(数组名)获取整个数组占用的内存空间

    如果除以对应的sizeof(数据类型),就可以获得该数组的长度【元素个数】

    void arrayDemo () {
        int arr[] = {11, 13, 21, 45};
        // arr存储的地址 等同于 &arr[0]
        printf("arr == &arr[0] ? %x == %x", arr, &arr[0]);
    }
    
    int main() {
        arrayDemo();
        return EXIT_SUCCESS;
    }

    四、函数剥离

    脱离主函数文件编写程序

    但是我的CLion上面就是引用失败,还找不到问题。。。

    1、首先编写头文件

    【demo.h】

    #ifndef __DEMO_H__
    #define __DEMO_H__
    int sum(int n1,int n2);
    #endif //__DEMO_H__

    2、编写引用头文件的源文件

    #include "demo.h"
    #include <string.h>
    #include <stdio.h>
    
    int sum(n1, n2) {
        return n1 + n2;
    }

    3、在主函数源文件中的Main函数中调用文件的函数

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdlib.h>
    #include <stdio.h>
    #include "demo.h"
    
    int main() {
        int result = sum(5, 6);
        printf("sum 5、6 -> %d
    ", result);
        return EXIT_SUCCESS;
    }

    五、EXIT & RETURN

    void exitAndReturn () {
        exit(0); // 直接退出程序
    
        return; // 当前这个函数结束
    }

    六、全局函数和静态函数

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void globalFunction() {
        // todo... 全局函数
        // 允许引用其他文件函数,然后调用
        // extern void fromOtherFileFunction();
        // fromOtherFileFunction();
    }
    
    static void staticLocalFunction() {
        // static修饰之后,该函数仅提供给此文件调用
    }
    
    int main() {
    
        return 0;
    }
  • 相关阅读:
    Kafka设计解析(二)- Kafka High Availability (上)
    Kafka设计解析(三)- Kafka High Availability (下)
    Kafka深度解析
    Cloudera Manager(CDH5)内部结构、功能包括配置文件、目录位置等
    Failed to start /etc/rc.d/rc.local Compatibility
    Offset Management For Apache Kafka With Apache Spark Streaming
    maven-assembly-plugin打包可执行的jar包
    How Cigna Tuned Its Spark Streaming App for Real-time Processing with Apache Kafka
    SystemTap Beginners Guide
    数据可视化的开源方案: Superset vs Redash vs Metabase (二)
  • 原文地址:https://www.cnblogs.com/mindzone/p/13932869.html
Copyright © 2011-2022 走看看