【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\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的更多相关文章
- Python高手之路【六】python基础之字符串格式化
Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...
- 【原】谈谈对Objective-C中代理模式的误解
[原]谈谈对Objective-C中代理模式的误解 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 这篇文章主要是对代理模式和委托模式进行了对比,个人认为Objective ...
- 【原】FMDB源码阅读(三)
[原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...
- 【原】Android热更新开源项目Tinker源码解析系列之一:Dex热更新
[原]Android热更新开源项目Tinker源码解析系列之一:Dex热更新 Tinker是微信的第一个开源项目,主要用于安卓应用bug的热修复和功能的迭代. Tinker github地址:http ...
- 【调侃】IOC前世今生
前些天,参与了公司内部小组的一次技术交流,主要是针对<IOC与AOP>,本着学而时习之的态度及积极分享的精神,我就结合一个小故事来初浅地剖析一下我眼中的“IOC前世今生”,以方便初学者能更 ...
- Python高手之路【三】python基础之函数
基本数据类型补充: set 是一个无序且不重复的元素集合 class set(object): """ set() -> new empty set object ...
- Python高手之路【一】初识python
Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...
- 【开源】简单4步搞定QQ登录,无需什么代码功底【无语言界限】
说17号发超简单的教程就17号,qq核审通过后就封装了这个,现在放出来~~ 这个是我封装的一个开源项目:https://github.com/dunitian/LoTQQLogin ————————— ...
- 【原】FMDB源码阅读(二)
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
随机推荐
- c# 语音识别 | 智能对话
在.NET4.0中,我可以借助System.Speech组件让电脑来识别我们的声音. 以上,当我说"name",显示"Darren",我说"age&q ...
- 算法学习笔记(13): Manacher算法
Manacher算法 形象的被译为马拉车算法 这个算法用于处理简单的回文字符串的问题.可以在 \(O(n)\) 的复杂度内处理出每一个位置为中心的回文串的最长长度. 为了避免出现偶数长度的回文串,导致 ...
- 夜莺监控 v7.beta4 发版,仪表盘变量和业务组下的机器联动
这个版本最大的改动,就是仪表盘变量和业务组下的机器联动.大家可以导入这个大盘做测试: https://github.com/ccfos/nightingale/blob/main/integratio ...
- Kubernetes监控手册06-监控APIServer
写在前面 如果是用的公有云托管的 Kubernetes 集群,控制面的组件都交由云厂商托管的,那作为客户的我们就省事了,基本不用操心 APIServer 的运维.个人也推荐使用云厂商这个服务,毕竟 K ...
- Scrapy框架(六)--图片数据抓取
基于文件下载的管道类 在scrapy中我们之前爬取的都是基于字符串类型的数据,那么要是基于图片数据的爬取,那又该如何呢? 其实在scrapy中已经为我们封装好了一个专门基于图片请求和持久化存储的管道类 ...
- 猪齿鱼数智化开发管理平台 1.3.0-alpha发布,欢迎立即体验!
2022年3月18日,数智化开发管理平台猪齿鱼 Choerodon发布 V1.3-alpha版本,多项功能新增或优化,多管齐下,全面提升团队工作效能!通过提供体系化方法论和协作.测试.DevOp ...
- Angular项目简单使用拦截器 httpClient 请求响应处理
1:为啥要使用拦截器 httpClient 请求响应处理,其作用我们主要是: 目前我的Angular版本是Angular 17.3,版本中实现请求和响应的拦截处理了.这种机制非常适合添加如身份验证头. ...
- Wakelocks 框架设计与实现
Wakelocks 框架是基于Wakeup Source实现的为Android系统上层提供投票机制,以阻止系统进入休眠. 1.功能说明 该模块的支持受宏CONFIG_PM_WAKELOCKS控制.在使 ...
- Java面试知识点(六)hashmap深度理解
1.hashmap 的数据结构 要知道 hashmap 是什么,首先要搞清楚它的数据结构,在 java 编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用 ...
- Plugin 'org.springframework.boot:spring-boot-maven-plugin:'not found
前言 在配置spring-boot的maven时,软件报错:Plugin 'org.springframework.boot:spring-boot-maven-plugin:'not found 在 ...