一、类型限定符

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\n", 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;
}

【C】Re04的更多相关文章

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. 【原】谈谈对Objective-C中代理模式的误解

    [原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...

  3. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  4. 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新

    [原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...

  5. 【调侃】IOC前世今生

    前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...

  6. Python高手之路【三】python基础之函数

    基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...

  7. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  8. 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】

    说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...

  9. 【原】FMDB源码阅读(二)

    [原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...

  10. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

随机推荐

  1. MySQL入门到精通(十):SQL优化第一篇(2021最新发布)

    SQL优化 1. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,创建表时N ...

  2. BLP 模型

    公号:Rand_cs BLP 模型 本篇文章是调研了许多资料后对 BLP 模型的一个总结 MLS,Multi-level Security,主要关心的是数据机密性 D. Elliott Bell 和 ...

  3. element table根据条件隐藏复选框

    在<el-table>标签加 :cell-class-name="cellClass" 在 <el-table-column type="selecti ...

  4. 将链表以m长度为一组反转链表

    一群友分享的阿里面试题 1.将head链表以m为组反转链表(不足m则不反转): 例子:假设m=3. 链表 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> ...

  5. Java代码规范及异常汇总 非空异常 NullPointerException

    Java规范及异常汇总1.java.lang.NullPointerException: nullorderReq.getId() != -1 修改为: orderReq.getId() != nul ...

  6. k8s集群搭建及对一些组件的简单理解(一)

    背景 k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题. 要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的:后来买了一台便宜的,所以就有了两台,但是不在 ...

  7. Linux内核的5个子系统

    --- title: Linux内核的5个子系统 EntryName: subsystems_in_linux_kernel date: 2020-10-10 03:07:07 categories: ...

  8. NAT类型发现

    一.前言 之前一篇文章中,提出了一个判断NAT类型的方案.该方案是自己研究设计的,比较粗糙.近期研读了关于STUN的一些协议标准,其中RFC3489中就包含了判断NAT类型的标准方案. 与自己设计的方 ...

  9. 五个节点的hadoop集群--主要配置文件

    五个节点:配置文件解析:hadoop01               NameNode .DataNode.NodeManagerhadoop02 ResourceManager hadoop03 D ...

  10. 严格根号带修 RMQ

    其实很简单,把之前随机数据的解法中维护块内数据的数据结构换成约束 RMQ,这样子复杂度 严格 单点修改 \(O(\sqrt n)\),区间查询 \(O(1)\),线性空间. 唯一的问题是常数太大了,有 ...