auto

C —— 存储类

▼魔方 西西 提交于 2020-03-08 16:44:12
存储类定义 C 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。 auto auto 存储类是所有局部变量默认的存储类。也就是说 int number = 10; 等价于 auto int number = 10; auto 只能用在函数内,即 auto 只能修饰局部变量。 register register 存储类用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。寄存器只用于需要快速访问的变量,比如计数器。还应注意的是,定义 ‘register’ 并不意味着变量将被存储在寄存器中,它意味着变量可能存储在寄存器中,这取决于硬件和实现的限制。例如: register int number = 10 ; static static 修饰符可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。全局声明的一个 static 变量或方法可以被任何函数或方法调用,只要这些方法出现在跟 static 变量或方法同一个文件中。例如: # include <stdio.h> static int STATIC_NUMBER = 27 ; int main ( ) { printf ( "static int

flex常用取值分析

 ̄綄美尐妖づ 提交于 2020-03-07 03:44:31
首先明确一点是, flex 是 flex-grow 、 flex-shrink 、 flex-basis 的缩写。故其取值可以考虑以下情况: flex 的默认值是以上三个属性值的组合。假设以上三个属性同样取默认值,则 flex 的默认值是 0 1 auto。同理,如下是等同的: .item {flex: 2333 3222 234px;} .item { flex-grow: 2333; flex-shrink: 3222; flex-basis: 234px; } 当 flex 取值为 none ,则计算值为 0 0 auto,如下是等同的: .item {flex: none;} .item { flex-grow: 0; flex-shrink: 0; flex-basis: auto; } 当 flex 取值为 auto ,则计算值为 1 1 auto,如下是等同的: .item {flex: auto;} .item { flex-grow: 1; flex-shrink: 1; flex-basis: auto; } 当 flex 取值为一个非负数字,则该数字为 flex-grow 值, flex-shrink 取 1, flex-basis 取 0%,如下是等同的: .item {flex: 1;} .item { flex-grow: 1; flex-shrink:

flex属性设置详解

笑着哭i 提交于 2020-03-07 03:42:05
CSS代码中常见这样的写法:flex:1 这是 flex 的缩写: flex-grow 、 flex-shrink 、 flex-basis ,其取值可以考虑以下情况: 1. flex 的默认值是以上三个属性值的组合。假设以上三个属性同样取 默认值 ,则 flex 的默认值是 0 1 auto。同理,如下是等同的: .item {flex: 2333 3222 234px;} .item { flex-grow: 2333; flex-shrink: 3222; flex-basis: 234px; } 2. 当 flex 取值为 none ,则计算值为 0 0 auto,如下是等同的: .item {flex: none;} .item { flex-grow: 0; flex-shrink: 0; flex-basis: auto; } 3. 当 flex 取值为 auto ,则计算值为 1 1 auto,如下是等同的: .item {flex: auto;} .item { flex-grow: 1; flex-shrink: 1; flex-basis: auto; } 4. 当 flex 取 值为一个非负数字 ,则该数字为 flex-grow 值, flex-shrink 取 1, flex-basis 取 0%,如下是等同的: .item {flex: 1;}

回顾C++11标准特性(1)

风流意气都作罢 提交于 2020-03-05 18:21:31
今天突发奇想不想使用cout进行输出信息了,想把cout换成自己任意指定的非关键词变量名字进行输出 #include <iostream> using namespace std; int main(){ decltype(cout) &shit = cout; shit<<"i am piece of shit"<<endl; return 0; } 需要注意的是,我是用g++进行编译的时候需要指明使用的标准 g++ shit.cpp -o shit -std=c++11 这样就实现了使用 shit 替换 cout 的目的. 获取类型在c++11标准中有两个操作符,一个是 auto 一个是 decltype , 不同的是 auto 好像只能获取基础类型的类型信息,如果是自定义类型,就有问题 事实证明 auto &shit = cout 也可以正常执行 auto是通过右值进行推导类型,而decltype像是一个函数,传入表达式或者对象作为参数可以获得其类型 decltype类型指示符的详细细节 delctype 接表达式作为参数,针对只含有一个变量的表达式和不是一个变量的表达式表现不同的效果 delctype接 只含有一个变量的表达式 则返回这个变量的类型,包括顶层const和引用在内,这一点 和auto不同 ,auto不能得到一个变量的顶层const,也不能操作引用

css:overflow

狂风中的少年 提交于 2020-03-05 06:58:22
注意点: 1.overflow-x,overflow-y, 当两者不同时,一方被设置为visible,另一个被赋值为hidden、scroll、auto,那么这个visible会被重置为auto 2.overflow前提: (1)非display :line (2)对应方位的尺寸限制 (3)对于单元格td等,还需要设置table的table-layout:fixed才行 3.IE7,button按钮,文字越多,按钮的padding越大,添加css样式overflow:visible就正常了。 4.无论什么浏览器,默认滚动条都来自于html,而非body。表现为:body默认margin0.5em,而有垂直滚动条的时候,滚动条是紧靠右边的,没有0.5em的间距 5.IE7-,默认滚动条一直出现,效果类似overflow-y:scroll,(overflow-y在IE8+才支持),IE8+则是默认overflow-y:auto。故去除页面默认滚动条的时候,html{overflow:hidden}就行。 6.JS获取滚动条的高度 Chrome:document.body.scrollTop 其它:document.documentElement.scrollTop 而这两者在很多版本的浏览器不一定是同时支持的 所以:滚动条高度=document.body.scrollTop|

autolayout sizeclass 资料集锦

自闭症网瘾萝莉.ら 提交于 2020-03-05 03:26:56
http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2 Core Animation Programming Guide:Core Animation Basics Advanced Auto Layout Toolbox-objc.io WWDC2012 session 202 – Introduction to Auto Layout for iOS and OS X WWDC2012 session 228 – Best Practices for Mastering Auto Layout WWDC2012 session 232 – Auto Layout by Example 参考资料: 1:iOS7.0 Xcode5 Auto Layout 备忘录 http://www.cnblogs.com/thefeelingofsimple/p/3316300.html 2:iOS 6 Auto Layout NSLayoutConstraint 界面布局 http://www.devdiv.com/iOS_6_Auto_Layout_NSLayoutConstraint_%E7%95%8C%E9%9D%A2%E5%B8%83%E5%B1%80-weblog-227936-13173.html 3

第一周笔记

若如初见. 提交于 2020-03-03 03:41:22
嵌入式操作系统网络编程和面向对象程序开发 一、从C到C++ C++对C进行了加强,尤其是在实用性方面,如for语句(声明定义,foreach用法),register关键字的变化,bool类型关键字,三目运算符的增强,auto关键字 1.auto关键字 C语言auto关键字主要强调存储周期 C++中auto关键字的作用自动推断变量类型,通过变量初始值或者表达式中参与运算 auto定义的变量必须初始化 二、C++概述 1.C到C++升级(语法升级) 2.C++面向对象三大特点(封装,继承,多态) 3.C++内存管理(智能指针,内存池) 4.C++异常处理 5.C++文件处理(IO操作) 6.C++模版 7.C++STL 三、C++应用方向(服务器,GUI,图像处理) 1.GUI-Qt(视图,数据库,文件,网络) 2.服务器60%(大并发) 3.图像处理(opencv) 四、C语言与C++语言的优缺点 1.C语言 优点:1.直接访问硬件2.运行效率3.移植性 缺点:1.代码复用性差2.代码维护性差3.代码扩展性差 2.C++ 优点:1.良好复用性2.良好维护性3.良好扩展性 五、C++命名空间 1.命名空间的使用 定义命名空间(namespace) 使用域解析符:: 使用using声明 2.C++标准库和std命名空间 3.一个简单的C++程序要注意命名空间使用范围和使用规范 来源:

C++ Primer Plus(九)——内存模型和名称空间

你说的曾经没有我的故事 提交于 2020-03-02 03:24:14
程序分成三部分: 头文件:包含结构声明和使用这些结构的函数的原型,使用#define或const定义的符号常量,类声明,模板声明,内联函数 只需将源代码文件加入项目中,而不用加入头文件;不要使用#include来包含源代码文件,这样将导致多重声明。 同一个文件中只能将同一个头文件包含一次,可以使用以下的防护方案。基于预处理器编译命令#ifndef,可以在没有使用#define定义某个特定名称时,处理#ifndef和#endif之间的语句。但这种方法并不能防止编译器将文件包含两次,而只是让他忽略除第一次外的所有内容。 源代码文件:包含与结构相关的函数的代码 源代码文件:包含调用与结构相关的函数的代码 C++标准允许每个编译器以他认为合适的方式实现名称修饰,因此不同编译器创建的对象代码文件很可能无法正确的连接。请确保所有对象文件都是由同一个编译器生成的。 C++的存储连续性:自动存储连续性、静态存储连续性、线程存储连续性、动态存储连续性 在C++11中,关键字auto用于自动类型判断,但在C语言和以前的C++版本中,auto的含义截然不同,它被用于显式指出变量为自动存储。在C++11中,这种用法不再合法。 在C++11前,关键字register用于建议编译器使用CPU寄存器来存储自动变量。在C++11中,关键字register这种提示作用失去,只用于显式指出变量是自动的。

深入了解absolute

假如想象 提交于 2020-03-02 01:44:13
1.absolute与float的相同的特性表现 a.包裹性 b.破坏性:父元素没有设置高或宽,父元素的高或宽取决于这个元素的内容 c.不能同时存在 2.absolute独立使用,不与relative合用 * 超越overflow,无论是滚动还是隐藏 案例: html <div class="scroll"> <a href="javascript:;" class="close" title="关闭"></a> <img src="1.jpg"> <img src="2.jpg"> </div> css .scroll { width: 500px; height: 300px; margin: 200px auto 0; border: 1px solid #ccc; border-radius: 3px; box-shadow: 0 0 3px rgba(0,0,0,.35); background-color: #fff; overflow: auto; } .close { position: absolute; width: 34px; height: 34px; margin: -17px 0 0 483px; background: url(images/close.png) no-repeat; } img { display: block; margin:

CSS中width:100%和width:auto的区别

我的梦境 提交于 2020-03-01 15:42:18
<div class="parent"> <div class="child"> </div> </div> <style> .parent { width: 100px; background-color: red; } .child { width: 100%; background-color: blue; } </style> 上面代码中child的宽度设置为100%,意思是child的content的宽度等于parent的宽度100px,如下图所示: .child { width: 100%; background-color: blue; padding: 0 10px; border: 2px solid green; } 如果将child加上左右padding和border,则child的总宽度则会大于parent的宽度,表现为child的宽度撑出父元素了,如下图所示: .child { width: auto; background: blue; height: 100px; padding: 0 10px; border: 2px solid green; margin: 0 10px; } 而如果设置child的宽度为auto,则表现为content+padding+border+margin值等于parent的宽度100px,如下图所示: 这里延伸一个知识点