register:
假设有一些变量使用频繁,则为存取变量的值少花一些时间,
能够将该局部变量的值放在CPU的寄存器中,须要时直接从寄存器
中取出參加运算,不必去内存中去存取。 由于寄存器的存取速度
远远高于内存的存取速度,因此这样做能够提高执行效率。这样的
变量叫做“寄存器变量”,用register做声明。 说明:
(1)仅仅有局部自己主动变量和形式參数能够作为寄存器变量,其它
如全局变量则不能够。
(2)一个计算机系统中的寄存器数目是有限制的,不能定义随意
多个寄存器变量。 (3)局部静态变量不能定义为寄存器变量。
const:
(1)定义的const常量。具有不可变性。
(2)便于进行类型的检測,消除了一些不安全的隐患。
(3)保护被修饰的东西,防止的意外的改变影响到程序的安全。 (4)提高了代码的健壮性。语法逻辑性更加严谨。 (5)const类型的变量在程序执行时仅仅有一份拷贝,节省空间。 (6)编译器通常不为普通的const常量分配内存空间,而是将
它们保存在符号表中,使它们成为了编译期的常量。没有了存储
与读内存的操作,提高了效率。 static:
(1)全局静态变量或者全局静态函数:
保护该变量及该静态函数在其作用域内有效,不能在超出这个
这个作用域的范围使用。
(2)全局静态变量存储在全局数据区,为初始化的系统会给它默认
初始值。局部静态变量也是存储在全局数据区,作用范围仅仅在
它所属的作用域内,可是生命周期却存在project的结束。
(3)静态成员变量仅仅存在一份拷贝且属于该类而不属于不论什么成员变量,
静态成员函数仅仅能使用静态成员变量,由于其不属于不论什么一个对象,
仅仅属于这个类。 volatile:
假设一个基本变量被volatile修饰,等于是告诉编译器不要优
化该变量,意思就是每次取值都直接从内存中存取操作。这对
每次取值都须要变量存储在内存的真实有严格要求的变量来说,
就能够声明为volatile类型,这在多线程中使用的比較多。 typedef:
(1)定义一种类型的别名。而不是简单的宏替换,能够用作同一时候声明指针
型的多个对象。如:
char *pa,pb//声明了一个指针变量和一个字符变量。 typedef char* CHAR_PTR
CHAR_PTR pa,pb//此处就声明了两个指针变量。 (2)typedef struct Node
{
}Node;//在旧的C语言中用的比較多。为结构体又一次起一个别名。 (3)用typedef来定义与平台无关的类型。
比方定义一个VAL的浮点类型,在目标平台上能够表示高精度的范围。
typdef double VAL;
可是在还有一个平台上不支持double类型,我们能够在这个平台上这样
typedef float VAL;
这样就能够跨平台的定义自己合适的类型,而不须要改动大量的代码。
(4)为一个复杂的声明起一个简单或者easy标记的名字。
define:
(1)对变量仅仅在预处理阶段做原模原样的替换,不做不论什么的类型检測,主要是
定义变量或者定义函数。
(2)使用ifndef,define,endif来防止反复引用。
静态库:
1.浪费空间。每一个程序都有一份。 2.假设有一个地方改动了则须要又一次的编译载入。 3.执行速度快,不须要动态载入。
动态库:
1.动态库仅仅是导出一个动态表。在程序执行的时候他动态载入。
2.多个程序共享
3.执行时载入。能够非常easy的改动。就是打补丁。 4.执行的动态载入会花费一定的时间。 }
#include <iostream>
#include <math.h>
using namespace std;
//希尔排序。
void Shell(int a[],int n)
{
//增量取值。
//x=log10(n)此函数存在。
//(log(a)(b))=lg(b)/lg(a)或ln(b)/ln(a) 。 int m = n;//保存一份长度。
int len = log10(n) / (log10(2))+3;
int *b = new int[len];
int k = 0;
int temp;
while (n > 1)
{
b[k++] = (n / 2 + 1);
if (n / 2 == 1)break;
n = (n / 2) + 1;
}
b[k++] = 1;
for (int i = 0; i < k; ++i)
{
temp = b[i];
for (int j = 0; j < m-temp; ++j)
{
if (a[j]>a[j + temp])
{
a[j] ^= a[j + temp];
a[j + temp] ^= a[j];
a[j] ^= a[j + temp];
}
}
}
}
int main()
{
int a[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 4, 5, 6, 0, 1, 2, 3, 5534, 5, 542, 3, 4, 6, 7, 8, 6, 123 };
//int a[] = { 5, 4, 3, 2, 1 };
Shell(a, sizeof(a) / sizeof(int));
for (int i = 0; i < sizeof(a) / sizeof(int); i++)
{
cout << a[i] << " ";
}
cout << endl; return 0;
}

C++keyword大总结的更多相关文章

  1. 《JAVA语言程序设计》上课笔记

    教学目标:1.使学生了解JAVA课程的性质.定位.作用:为什么要学习JAVA?让学生知道如何学好JAVA: 教学内容: 一.        问几个问题 1.             你们到这里来干什么 ...

  2. C#+无unsafe的非托管大数组(large unmanaged array in c# without 'unsafe' keyword)

    C#+无unsafe的非托管大数组(large unmanaged array in c# without 'unsafe' keyword) +BIT祝威+悄悄在此留下版了个权的信息说: C#申请一 ...

  3. 分享MSSQL、MySql、Oracle的大数据批量导入方法及编程手法细节

    1:MSSQL SQL语法篇: BULK INSERT [ database_name . [ schema_name ] . | schema_name . ] [ table_name | vie ...

  4. Lucene搜索方式大合集

    package junit; import java.io.File; import java.io.IOException; import java.text.ParseException; imp ...

  5. Robot Framework--06 用户关键字User Keyword

    转自:http://blog.csdn.net/tulituqi/article/details/7906130 在我们做自动化案例的时候,用的最多的主要是用户关键字.说到关键字,大体上可以分为测试库 ...

  6. 《黑客大曝光》实践部分——sql注入(7/8)

    SQL注入实践 由于<黑客大曝光>中涉及到形形色色的攻击方式,从软件到硬件,甚至还有物理锁的开锁教程,当中的很多教程很有趣,但是我没有相关的环境,实践起来不好操作,比如说,查点扫描我还可以 ...

  7. 十大谷歌Google搜索技巧分享

    前言:多数人在使用Google搜索的过程是非常低效和无谓的,如果你只是输入几个关键词,然后按搜索按钮,你将是那些无法得到Google全部信息的用户,在这篇文章中,Google搜索专家迈克尔.米勒将向您 ...

  8. 技术分享:如何用Solr搭建大数据查询平台

    0×00 开头照例扯淡 自从各种脱裤门事件开始层出不穷,在下就学乖了,各个地方的密码全都改成不一样的,重要帐号的密码定期更换,生怕被人社出祖宗十八代的我,甚至开始用起了假名字,我给自己起一新网名”兴才 ...

  9. C语言面试题大汇总

    static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7. 引用与指针有什么差别?1) 引用必须被初始化,指针不必.2) 引用初始化以后不能被改变,指针能够改变所指的对象. ...

随机推荐

  1. JS(vue iview)分页解决方案

    JS(vue iview)分页解决方案 一.解决思路 使用分页组件 使用组件API使组件自动生成页面数量 调用组件on-change事件的返回值page 将交互获得的数组存在一个数组list中 通过p ...

  2. linux 笔记(一)

    1.Linux 安装3ython3 1.1 下载 wget https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 1.2 解压 tar -z ...

  3. 井字棋游戏升级版 - TopTicTacToe项目 简介

    一.游戏简介 井字棋是一款世界闻名的游戏,不用我说,你一定知道它的游戏规则. 这款游戏简单易学,玩起来很有意思,不过已经证明出这款游戏如果两个玩家都足够聪明的话, 是很容易无法分出胜负的,即我们得到的 ...

  4. 洛谷P2922 [USACO008DEC] 秘密消息Secret Message [Trie树]

    洛谷传送门,BZOJ传送门 秘密消息Secret Message Description     贝茜正在领导奶牛们逃跑.为了联络,奶牛们互相发送秘密信息.     信息是二进制的,共有M(1≤M≤5 ...

  5. Python之路【第四篇】: 函数、递归、内置函数

    一. 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 while True: i ...

  6. CentOS使用

    centos7编译安装git最新版 CentOS下 pycharm开发环境搭建之无穷无尽的问题 CentOS 7入门操作基础教程 centos中文站 CentOS7 常用命令集合 centos中有vi ...

  7. HDU 6060 RXD and dividing(dfs 思维)

    RXD and dividing Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  8. linux-ARM的几个使用指令

    1.u-boot.bin arm-linux-gnueabi-objdump -D -b binary -m arm u-boot.bin > u-boot.s arm-linux-gnueab ...

  9. cocos2d-android 使用 cocos2d 绘图

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha cocos2d-android-1 https://github.com/ZhouWei ...

  10. [BZOJ4444][SCOI2015]国旗计划(倍增)

    链上是经典贪心问题,将线段全按左端点排序后把点全撒在线段右端点上.这里放到环上,倍长即可. 题目保证不存在区间包含情况,于是有一种暴力做法,先将战士的管辖区间按左端点从小到大排序,对于询问x,从x战士 ...