赋值

memset 和 fill 的区别

戏子无情 提交于 2020-01-11 14:31:35
memset:按照字节填充字符 ①头文件:#include <string.h> ②一般用于填充char数组 ③用memset填充int数组的话,只能赋值0,-1,INF(0x3f3f3f3f),否则会出错,直接赋值为-1 fill:为一个区间赋值 ①头文件:#include <algorithm> ②可以任意赋值 来源: https://www.cnblogs.com/shiliuxinya/p/12179635.html

es6:阮一峰教程学习

烈酒焚心 提交于 2020-01-11 11:00:36
全局作用域 函数作用域 块级作用域 一:块级作用域 1.外层作用域无法读取内层作用域的变量 2.let const声明的变量只能先声明,后使用。 let const都是块级作用域!  const声明的变量必须赋初始值且不可变,像final! 不可变是指引用不可变,也就是内存中的那片地址。 Object.freeze(要冻结对象) 引用指向的对象不可变哦! const声明引用不可变! 3.es6六种声明变量的方法:var function let const import class 4.模块化编程:封装的思想哦!  作用域 5.顶层对象 全局对象 二:变量的解构赋值 1.数组 赋值的时候,进行模式匹配!   就是按照模式匹配的方式来赋值!(解构) 模式不匹配:解构失败 只要某种数据结构是可遍历的,那么就可以进行解构赋值。 2.对象 解构赋值:模式匹配的时候按照key、value匹配。不同于数组是按照索引。 3.字符串 三: 五:数组扩展 1. Array.from() 方法用于将两类对象转为真正的数组: 类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。 2. Array.of() 方法用于将一组值,转换为数组。 3. Array.copyWithin() 在当前数组内部,将指定位置的成员复制到其他位置

【C++】寒假学习-类和对象

回眸只為那壹抹淺笑 提交于 2020-01-11 08:54:50
1. C++内存布局分为几个区域,各自具备什么特点? 在C++中,程序在内存中的存储被分为五个区: 1)、栈区(stack):由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2)、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3)、全局/静态区(static):全局变量和静态变量的存储是 放在一块的,在程序编译时分配 4)、文字常量区:存放常量字符串 5)、程序代码区:存放函数体(类的成员函数、全局函数) 的二进制代码 2. 当定义类时,编译器会为类自动生成哪些函数?这些函数各自都有什么特点? 对于一个空类,C++编译器默认生成四个成员函数:默认构造函数、析构函数、拷贝(复制)构造函数、赋值函数。 1)、默认构造函数(default constructor): 在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。如果用户定义的类中没有显式的定义任何构造函数,编译器就会自动为该类型生成默认构造函数,称为合成的构造函数(synthesized default constructor)。C+

Java面试题26——运算符优先级

故事扮演 提交于 2020-01-11 08:48:36
运算符优先级 1.Java中的运算符优先级: 口诀:单目乘除为关系,逻辑三目后赋值。(大佬总结的) 口诀解释: 单目:指的是例如正负(±)这些一次只作用于一个变量的运算符,又叫一元运算符。 乘除:乘、除、模 ,毫无疑问优先级比加减高一级 为:即谐音“位”,指的是位运算中用到的符号:~(按位取反)<<(左移) >>(右移),^(也可以位运算,二进制异或)。 关系:大于、大于等于、小于、小于等于 逻辑:指的是异或、与、或三个逻辑运算符 三目:即三目运算符:条件运算符A > B ? X : Y 赋值:赋值运算符 具体的运算符排序如下:可以看到与我们的口诀不同的是,位运算符(按位与、按位或、按位异或)优先级排在关系运算符的后面。但是>>,<<,>>>等位运算符在关系运算符前面。~(按位取反)优先级很高。 这里的结合性是指运算符结合的顺序,通常都是从左到右。从右向左的运算符最典型的就是负号,例如3±4,则意义为3加-4,符号首先和运算符右侧的内容结合。 来源: CSDN 作者: 子衿@ 链接: https://blog.csdn.net/huiyanfreeflying/article/details/103914219

java基础-操作符-自增自减操作符

青春壹個敷衍的年華 提交于 2020-01-11 05:47:21
自增自减操作符的使用及理解参考: http://hinylover.space/2017/07/30/java-i-self-increament/ 转载自:https://blog.csdn.net/xialei199023/article/details/76383013 在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,笔者专门测试了一下,在Java语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。 int i = 0; int j1 = i++; // 正确 int j2 = ++i; // 正确 i++; // 正确 ++i; // 正确 i++ = 5; // 编译不通过 ++i = 5; // 编译不通过 关于i++和++i的区别,稍微有经验的程序员都或多或少都是了解的,为了文章的完整性,本文也通过实例来简单地解释一下。 { int i = 1; int j1 = i++; System.out.println("j1=" + j1); // 输出 j1=1 System.out.println("i=" + i); // 输出 i=2 } { int i = 1; int j2 = ++i;

表结构

不羁的心 提交于 2020-01-11 05:28:05
1.字段约束条件 作用:限制字段赋值 设置约束条件: null 允许为空 not null 不允许为空 key 键值类型 default 默认值,向表中插入记录时,如果不给字段赋值,则使用默认值赋值,缺省为NULL extra 额外设置 2.修改表结构 mysql > alter table 库.表 操作动作 ; 操作动作: mysql > alter table 库.表 add 字段 类型 ( 宽度 ) [ 约束条件 ] [ first | after 字段 ] ; #添加字段,after制定添加到哪个字段后 mysql > alter table 库.表 drop 字段 ; #删除字段 mysql > alter table 库.表 modify 字段 类型 ( 宽度 ) [ 约束条件 ] [ first | after 字段 ] ; #不能与已存储的值冲突 mysql > alter table 库.表 change 字段 新字段名 类型 ( 宽度 ) [ 约束条件 ] ; #修改字段名 mysql > alter table 库.表 rename 新表名 ; #修改表名 来源: CSDN 作者: baiyuani 链接: https://blog.csdn.net/weixin_45157506/article/details/103826937

void类型和void* 的用法

会有一股神秘感。 提交于 2020-01-11 05:01:16
转自: https://www.cnblogs.com/yuanyongbin/p/8058755.html C语言中的void 和 void * 总结 1、void的作用   c语言中,void为“不确定类型”,不可以用void来声明变量。如:void a = 10;如果出现这样语句编译器会报错:variable or field ‘a’ declared void。   在C语言中void 常常用于: 对函数返回类型的限 定 和对函数参数限定      (1)对函数返回类型的限定:当函数不需要返回类型是必须用void 来限定返回类型,限定了函数的返回类型为void后函数不能有返回值;如:void fun(int a);   (2)对函数参数类型的限定:当函数不允许接受参数时必须用void 来限定函数参数,限定了函数的参数类型为void后函数不能有参数;如:int fun(void); 2void * 的作用 2,、在C语言中void *是一个很有意思的玩意。   C语言中void * 为 “不确定类型指针”,void *可以用来声明指针。如:void * a;   (1)void *可以接受任何类型的赋值:     void *a = NULL;     int * b = NULL;     a = b;//a是void * 型指针,任何类型的指针都可以直接赋值给它

Python赋值、浅拷贝、深拷贝的区别

非 Y 不嫁゛ 提交于 2020-01-11 03:39:11
一、赋值 str例子 >>> a = 'hello' >>> b = 'hello' >>> c = a >>> [id(x) for x in (a,b,c)] [42654216, 42654216, 42654216] a,b,c三者地址一样,相当于a=b=c。赋值系统先给变量或对象(这里的hello)分配了内存,然后将地址赋给a,b,c。所以他们的地址是相同的。 >>> a = 'world' >>> [id(x) for x in (a,b,c)] [42654384, 42654216, 42654216] >>> print(a,b,c) world hello hello 这时只有a的地址和值变了,但是b,c地址和值都没有变。因为str的不可变性,a要重新赋值则需重新开辟内存空间,所以a的值改变,a指向的地址改变。b, c由于'hello'的不变性,不会发生改变。 list例 >>> a = ['hello'] >>> b = ['hello'] >>> c = a >>> [id(x) for x in (a,b,c)] [42670920, 42671816, 42670920] 但是这种情况却不一样了,a和b的地址不同。为何? 因为str是不可变的,所以同样是'hello'只有一个地址,但是list是可变的,所以必须分配两个地址。 >>> a[0] =

es6解构赋值

雨燕双飞 提交于 2020-01-11 01:24:22
es6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为 解构 解构赋值,左右结构必须一样,使用左边定义的值,快速的取出数据中对应 的数据值,而且 定义和赋值必须放到一起,不然的话就会报错,取不出来数据 值,而且左边也必须是一个js存在数据结构不然的话也会报错,解构赋值的主 要作用还是,快速的让我们在数据中抓取出我们想要的数据。 <script type="text/javascript"> //数组的解构赋值 let arr = ["hello","react","vue","微信小程序"]; let [a,b,c,d] = arr; console.log(c);//输出的是 vue let arr2 = [1,[2,[3]]]; let [a2,[b2,[c2]]] = arr2; console.log(b2);//输出的是2 //对象的解构赋值 let obj = {id:123,title:"hello"} var {id,title} = obj; console.log(title);//输出的是 hello </script> 来源: CSDN 作者: Hello My girl. 链接: https://blog.csdn.net/sslcsq/article/details/103858258

Python——赋值、浅拷贝、深拷贝

ⅰ亾dé卋堺 提交于 2020-01-10 20:14:00
  和很多语言一样,Python中也分为简单赋值、浅拷贝、深拷贝这几种“拷贝”方式。   在学习过程中,一开始对浅拷贝理解很模糊。不过经过一系列的实验后,我发现对这三者的概念有了进一步的了解。   一、赋值    赋值算是这三种操作中最常见的了,我们通过一些例子来分析下赋值操作:    str例 >>> a = 'hello' >>> b = 'hello' >>> c = a >>> [id(x) for x in a,b,c] [4404120000, 4404120000, 4404120000]   由以上指令中,我们可以发现a, b, c三者的地址是一样的。所以以上赋值的操作就相当于c = a = b = 'hello'。   赋值是系统先给一个变量或者对象(这里是'hello')分配了内存,然后再将地址赋给a, b, c。所以它们的地址是相同的。    list例 >>> a = ['hello'] >>> b = ['hello'] >>> c = a >>> [id(x) for x in a,b,c] [4403975952, 4404095096, 4403975952]   但是这种情况却不一样了,a和b的地址不同。为何?    因为str是不可变的,所以同样是'hello'只有一个地址,但是list是可变的,所以必须分配两个地址。   这时