【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#.NET WinForm 多个子Task嵌套 Task.WaitAll 阻塞UI线程
C#.NET WinForm 多个子Task(子线程)嵌套 Task.WaitAll 阻塞UI线程 (界面) 情况: DoIt()方法内,开了2个Task 执行任务,子任务中会更新UI. DoIt( ...
- vitual box 安装centos7
vitual box下载地址: https://www.virtualbox.org/wiki/Downloads centos7下载地址: CentOS Linux 选择7-2009,x86-64 ...
- 增补博客 第一篇 python 简易带参计算器
设计一个简易的参数计算器.[输入格式]第一行输入待计算的带变量参数的计算式第二行输入各变量参数的赋值序列[输出格式]输出带变量参数的计算式的计算结果[输入样例]a+ba=1,b=10[输出样例]11 ...
- 微信和支付宝异步回调通知IP白名单
附一:微信支付回调通知出口IP列表 商户侧对商户回调通知功能开通白名单网段: 上海电信出口网段:101.226.103.0/25 上海联通出口网段:140.207.54.0/25 上海CAP出口网段: ...
- CentOS7学习笔记(三) 用户和用户组管理
用户管理 Linux中root用户是权限最大的用户,一般情况下只有服务器管理员拥有root用户的使用权,而我们会使用其他用户来连接Linux 创建用户的命令 创建用户的命令是useradd name, ...
- Windows CSC提权漏洞复现(CVE-2024-26229)
漏洞信息 Windows CSC服务特权提升漏洞. 当程序向缓冲区写入的数据超出其处理能力时,就会发生基于堆的缓冲区溢出,从而导致多余的数据溢出到相邻的内存区域.这种溢出会损坏内存,并可能使攻击者能够 ...
- Win10下载纯净版ISO镜像
进入windows官网下载页面 1.F12 进入开发者模式->选择浏览模式为手机->机型设置为Ipad Air ->刷新页面->下载选项出现 下图第二步选择完成后,需要刷新一下 ...
- notonlysuccess大神的线段树完全版
在大神的网站进不去的时候可以过来看看,另外道客巴巴有个排版比较好的文档,外观派可以去看看http://www.doc88.com/p-2728103209174.html 很早前写的那篇线段树专辑至今 ...
- 张高兴的 MicroPython 入门指南:(一)环境配置、Blink、部署
目录 什么是 MicroPython 环境配置 硬件部分 软件部分 Hello World! Blink Pico 的引脚 常见电子元件 面包板 跳线 开关 发光二极管 电阻 使你的 Pico 闪烁 ...
- 『vulnhub系列』Deathnote-1
『vulnhub系列』Deathnote-1 下载地址: https://www.vulnhub.com/entry/deathnote-1,739/ 信息搜集: 使用nmap扫描存活主机,发现主机开 ...