赋值语句

CPrimer Plus学习手记——第二章-快速概要-命名

流过昼夜 提交于 2019-11-30 03:50:25
命名 给变量命名时要使用有意义的变量名或标识符(如,程序中需要一个变量数羊,该变量名应该是sheep_count而不是x3)。 如果变量名无法清楚地表达自身的用途,可在注释中进一步说明。这是一种良好的编程习惯和编程技巧。 C99和C11允许使用更长的标识符名,但是编译器只识别前63个字符。对于外部标识符(参阅第12章),只允许使用31个字符。〔以前C90只允许6个字符,这是一个很大的进步。旧式编译器通常最多只允许使用8个字符。〕 实际上,你可以使用更长的字符,但是编译器会忽略超出的字符。也就是说,如果有两个标识符名都有63个字符,只有一个字符不同,那么编译器会识别这是两个不同的名称。 如果两个标识符都是64个字符,只有最后一个字符不同,那么编译器可能将其视为同一个名称,也可能不会。标准并未定义在这种情况下会发生什么。(忽略掉了超过的字符) 可以用小写字母、大写字母、数字和下划线(_)来命名。而且,名称的第1个字符必须是字符或下划线,不能是数字。 有效和无效的名称 无效的名称 第一个$符号不是字母、也不是下划线。** 第二个不能用数字2。 第三个-符号 第四个使用空格符号了 第五个‘符号 操作系统和C库经常使用以一个或两个下划线字符开始的标识符(如,_kcab),因此最好避免在自己的程序中使用这种名称。 标准标签都以一个或两个下划线字符开始,如库标识符。这样的标识符都是保留的

指针

心不动则不痛 提交于 2019-11-30 02:33:33
一、地址和指针 1.1内存 内存由一系列连续的存储单元组成,每个存储单元都有计算机分配的 "编号" ——地址 定义一个变量,即是给变量分配从某一地址开始的若干存储单元,且通常以起始地址作为该变量的地址 注:内存空间的访问方式:通过变量名访问,通过地址访问 1.2针和指针变量 指针:一个变量的地址称为该变量的指针 指针变量:专门存放变量地址的变量(即指针)称为指针变量 二、指针变量 2.1始化 存储类型 数据类型 *指针名 = 初始地址 如 int* a_ptr = &a; 注: 用变量地址作为初值时,该变量必须在指针初始化之前声明过,且变量类型应与指针类型一致 可以用一个已有合法值的指针去初始化另一个指针变量 不要用一个内部非静态变量去初始化 static 指针 2.2赋值 1、语法形式 指针名 = 地址 注:"地址"中存放的数据类型与指针类型必须相等 2、赋值为地址常量或变量,不能是普通整数 通过地址运算“&”求得已定义的变量和对象的起始地址 动态内存分配成功时返回的地址 3、指针空值nullptr C++11 使用 nullptr 关键字,是表达更准确,类型安全的空指针 4、允许定义或声明指向 void 类型的指针 该指针可以被赋予任何类型对象的地址,如:void* general ; #include <iostream> using namespace std; int

JavaScript笔记

孤街浪徒 提交于 2019-11-30 02:19:25
JavaScript 1.基本认识 1.1 可以直接在标签中添加事件 <div id="wrap" onclick="alert(123);">123</div> <a href="javascript:void(0);">gogogogogo</a> <a href="javascript:alert('a标签被点击了!');">233333</a> 1.2 script标签只能放在head或者body里面 一个html中可以放无数个script标签 script标签载入有先后顺序 如果一个script标签已经用来引入外部的js文件了,那么在标签内写代码无用 <script type="text/javascript" language="JavaScript"> //type和language是声明语言格式,推荐不写 alert('潭州教育!转义字符\\') </script> 1.3 系统弹窗 confirm prompt let a = confirm('确认不要媳妇啦?'); console.log(a); //获得用户选择的结果, "boolean" let b = prompt('请输入你媳妇的名字:'); console.log(b); //用户输入的结果, 取消-> null -> "object" 确定 -> string 2.数据类型 2.1 ES5

【第十二篇】Python面向对象进阶

风格不统一 提交于 2019-11-29 23:50:17
一、isinstance(obj,cls)和issubclass(sub, super) 1.1 isinstance isinstance(obj,cls)检查obj是否是类cls的对象 包括继承关系 1 class Foo(object): 2 pass 3 4 obj = Foo() 5 print(isinstance(obj, Foo)) # True 1.2 issubclass issubclass(sub, super)检查sub类是否是super类的派生类 判断类与类之间的继承关系 1 class Foo(object): 2 pass 3 4 5 class Bar(Foo): 6 pass 7 8 9 print(issubclass(Bar, Foo)) # True 二、特殊方法 跟运算符无关的特殊方法: 类别 方法名 字符串 / 字节序列表示形式 __repr__、 __str__、 __format__、 __bytes__ 数值转换 __abs__、 __bool__、 __complex__、 __int__、 __float__、 __hash__、 __index__ 集合模拟 __len__、 __getitem__、 __setitem__、 __delitem__、__contains__ 迭代枚举 __iter__、 _

深入理解JVM,虚拟机类加载机制

天涯浪子 提交于 2019-11-29 19:15:02
类加载过程概览 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括以下7个阶段: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization) 使用(Using) 卸载(Unloading) 其中前五个阶段即为类加载的全过程。在后面会进行详细的介绍。而验证、准备、解析3个部分统称为连接(Linking)。这7个阶段的发生顺序如下图: 在上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须按照这种顺序按部就班地开始(开始而不是完成,这些阶段是互相交叉着进行的,在一个阶段执行过程中就会激活另一个阶段),而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java的运行时绑定(也称为动态绑定或晚期绑定)。 类初始化的时机 对于类加载过程的第一个阶段:加载,jvm规范中并没有进行强制约束其开始时机,可交由jvm的具体实现来自由把握。但是对于初始化阶段,jvm规范严格规定了有且只有下列5种情况必须对类进行“初始化”(很自然地,加载、验证、准备需要在此之前开始): 遇到 new 、 getstatic 、 putstatic 、 invokestatic 这四条字节码指令时,如果类没有进行过初始化,则必须先触发其初始化

part3-1 Python列表和元组(列表和元组常用方法使用,序列封包和解包)

孤街浪徒 提交于 2019-11-29 18:22:39
Python中内置的三种常用数据结构:列表(list)、元组(tuple)和字典(dict)。这三种数据结构可用于保存多个数据项,可以保存大量数据。列表和元组是按顺序存放元素,每个元素有自己的索引,可通过索引访问元素,两者的区别在于,元组是不可修改的,列表可以修改。字典以 key-value(键值对)形式保存数据。这三种数据结构是编程中必不可少的内容。一、序列介绍序列是指一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员。常见的序列类型有:字符串、列表、元组。字符串和元组序列类型是不可变的,一旦创建就不能修改其所包含的成员。列表是可变序列,程序可以修改列表序列中的元素。在实际运用时,如果保存固定个数的数据项,而不需要修改时,就应该使用元组。列表创建:使用方括号,元素之间用英文逗号分隔。也可将可迭代对象传递给内置函数list()来创建。元组创建:使用圆括号,元素之间用英文逗号分隔。也可将可迭代对象传递给内置函数tuple()来创建。二、 列表和元组的通用方法只要不涉及到改变元素的操作,列表和元组的用法是通用的。1、 通过索引使用元素列表和元组的索引都是从0开始,第1个元素的索引为0,第2个元素的索引为1,......,以此类推;还可以使用负数索引,倒数第1个元素的索引为-1,倒数第2个元素的索引为-2,......,以此类推

python - - 函数

若如初见. 提交于 2019-11-29 16:52:00
python -- -- 函数 普通函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 规则: 以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。(参数可以没有) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数名所有都小写 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 注意:若定义的函数名在程序前面定义的函数名相同则将程序前面的函数名覆盖 定义方式: def 函数名(参数列表):   函数体 函数调用 你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。 参数传递 注意:类型属于对象,变量是没有类型的 a=[1,2,3] a="Runoob" 解析: [1,2,3] 是 List 类型,“Runoob” 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。 固定参数 形参 定义函数时,括号里的参数,没有具体值 补充: 形参可以有默认值,调用时,该参数可以不赋值,如果赋值就会覆盖掉默认值

python---函数

℡╲_俬逩灬. 提交于 2019-11-29 16:15:36
python函数篇 普通函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 规则: 以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。(参数可以没有) 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数名所有都小写 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 注意:若定义的函数名在程序前面定义的函数名相同则将程序前面的函数名覆盖 定义方式: def 函数名(参数列表): 函数体 函数调用 你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。 参数传递 注意:类型属于对象,变量是没有类型的 a=[1,2,3] a="Runoob" 解析: [1,2,3] 是 List 类型,“Runoob” 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是指向 List 类型对象,也可以是指向 String 类型对象。 固定参数 形参 定义函数时,括号里的参数,没有具体值 补充: 形参可以有默认值,调用时,该参数可以不赋值,如果赋值就会覆盖掉默认值 如果形参有默认值

Java基础-运算符(一)

有些话、适合烂在心里 提交于 2019-11-29 15:10:11
Java 语言支持如下运算符: 算术运算符: +,-,*,/,%,++,– 赋值运算符 = 扩展赋值运算符:+=,-=,*=,/= 关系运算符: >,<,>=,<=,==,!= 逻辑运算符: &&,||,! 位运算符: &,|,^,~ , >>,<<,>>> (了解!!!) 条件运算符 ?: 相关概念辨析 +运算符 操作符 Operator 5+6 表达式 expression 5 6 操作数 Operand int m =5+6; 语句 Sentence 代码示例 package com . cwl . base . day01 ; /** * @program: java_base * @description: 测试算术运算符 * @author: ChenWenLong * @create: 2019-11-05 15:07 **/ public class TestOperator01 { public static void main ( String [ ] args ) { /* byte a = 1; int b = 2; long b2 = 3; // byte c = a+b; //报错 // int c2 = b2+b; //报错 float f1 = 3.14F; float d = b+b2; // float d2 = f1+ 6.2; //报错

委托Delegate +事件Event

蹲街弑〆低调 提交于 2019-11-29 12:52:37
委托就是面向对象函数指针 能指向静态方法和对象的实例 委托必须跟预委托(方法)具有相同的返回值 参数类型 委托的本质 是一个类 任何声明类的地方都可以声明委托。 我们习惯于把数据作为参数传递给方法,如上面的例子所示。所以,给方法传递另一个方法听起来有点奇怪。而有时某个方法执行的操作并不是针对数据进行的,而是要对另一个方法进行操作。更麻烦的是,在编译时我们不知道第二个方法是什么,这个信息只能在运行时得到,所以需要把第二个方法作为参数传递给第一个方法 事件的四个步骤: 1: 在事件发行者中定义一个事件 2:在事件发行者中触发事件 3:在事件订阅者中定义事件处理程序 4:向事件发行者订阅一个事件 事件设计准则: 1:命名准则使用PascalCasing命名方式 2:声明delegate时,返回值必须是void,EventName事件的事件委托是EventNameEventHanlder,事件接受两个传入参数,一律命名为sender和e 3:定义一个提供事件委托的类,对类以EventNameArgs进行命名,从System.EventArgs派生该类,然后添加所有事件特定的成员。 public delegate void EventNameEventHanlder(object sender ,EventNameEventArgs e) 例子: ~using System; class