赋值

定义指针字符

孤者浪人 提交于 2020-01-14 17:51:53
定义指针字符 字符串常量是用一对双引号括起来的字符序列,与基本类型常量的存储类似。字符串常量是一串字符,通常被看作一个特殊的一维数组,与数组的存储类似,字符串常量中的所有字符在内存中连续存放。所以,系统在存储一个字符串常量是先给定一个起始地址,从该地址指定的存储单元开始,连续存放给字符串中的字符。也就是说,字符串常量实质上是一个指向该字符串首字符的指针常量。 如果定义一个字符指针接收字符串常量的值,,该指针就指向字符串的首字符。 那么如何定义指针字符呢? 指针要先赋值后引用,因为指针中存放的是地址,没有对它赋值,它就不知道指向谁,所以输入的字符也就不知道存放在哪里,因此在输入字符之后字符所存放的空间实际上是不知道的,如果它输入的空间中已经有其他数据了,那么这些数据就会被新输进来的数据覆盖,所以会导致出错。 char * s ; scanf ( "%s" , s ) ; //没有赋值便直接引用 char * s , str [ 20 ] ; s = str ; scanf ( "%s" , s ) ; //先赋值后引用 来源: CSDN 作者: 不想当菜的菜鸡 链接: https://blog.csdn.net/weixin_42371679/article/details/103973053

代码重构笔记(函数重新组织)

时光怂恿深爱的人放手 提交于 2020-01-14 13:13:31
Inline Temp 内联临时变量 动机:临时变量影响了其他构造方法 当程序有一个临时变量只被赋值一次,而且影响到了其他的重构,那么我将这个变量去除,用赋值给他的表达式来替换临时变量; 确认等式右边的表达式无副作用 然后尝试将临时变量声明为final,确定只赋值一次 替换临时变量 Replace Temp with Query 当临时变量保存一个运算结果或者查询结果,将表达式提取到一个独立函数,然后用函数替代; 优点:这样去除了临时变量不能被其他函数引用导致的多余代码问题 找出临时变量,如果只是一次赋值的变量则可直接提取替代,如果是收集的是循环里面的结果则将整个循环提点。注意:当你的提取代码有副作用时候,记得要用Separate Query from Modifler来切割查询和副作用。(副作用:即会影响数据库的修改类操作或者非当前查询的参数被修改的情况) Introduce Explaining Variale 当你的表达式复杂难懂时,将其提取出来用自定义命名的临时变量替换 优缺点:让代码变动容易理解,被局限于单个函数内 适合场景: 1.当用函数提取工作量比较大的时候就用引入解释性变量 2.当提取函数代码十分复杂,我们可以先引入解释性变量帮助理解,然后再提取 Remove Addignments to Paramters 移除对参数赋值,当代码对参数赋值时候吗

ng-show被隐藏的“功能”

被刻印的时光 ゝ 提交于 2020-01-14 08:15:23
在工作中由于手残,少写了一个“=”,导致了一个惊人的事情,接口返回的内容被我莫名其妙的改了,所以页面显示也很有问题。 代码说明: // 接口返回的字段是status:'abc_ing' // HTML的内容 <p ng-show = "status='abc_ed'">我是谁?</p> <p ng-show = "status=='abc_ing'">我在哪?</p> 那么此时页面就会显示,我是谁? 原来,ng-show 后面的判断条件对status的值进行了赋值操作(居然还可以赋值),我是第一次遇到这种情况。 而且你把接口内容console出来当中的status也是abc_ed; 因为console出来的内容是当下最新的内容,也就是ng-show中的判断条件对其赋值之后的结果。 所以从这里得到一个教训,只要console出来的内容和接口返回的不一致,那么一定是对数据进行了操作。如果在js代码中找不到进行数据修改的任何蛛丝马迹,别忘记去HTML部分检查一下,或许就会找到答案。 来源: CSDN 作者: cool-girl 链接: https://blog.csdn.net/adoreen/article/details/103854314

7.final

时光总嘲笑我的痴心妄想 提交于 2020-01-14 05:47:23
文章目录 1. final的指令重排 1.1. 赋值`final属性`的指令重排 1.2. 读取`final属性`的指令重排 1.3. `final属性`为引用类型 1. final的指令重排 对于 final 域,编译器和处理器要遵守两个重排序规则。 在构造函数内对一个 final变量 赋值,与随后把这个被构造对象的引用赋值给一个变量,这两个操作之间不能重排序 初次读一个包含final变量的对象,与随后初次读这个final变量,这两个操作之间不能重排序 public class FinalExample { int i;           // 普通变量 final int j;         // final 变量 static FinalExample obj; public FinalExample () {   // 构造函数 i = 1;         // 写普通域 j = 2;         // 写 final 域 } public static void writer () {  // 写线程 A 执行 obj = new FinalExample (); } public static void reader () {  // 读线程 B 执行 FinalExample object = obj; // 读对象引用 int a = object.i; 

spring相关知识点

淺唱寂寞╮ 提交于 2020-01-14 01:48:25
Spring 概述 ① Spring 是一个开源框架 ② Spring 为简化企业级开发而生,使用 Spring , JavaBean 就可以实现很多以前要靠 EJB 才能实现的功能。同样的功能,在 EJB 中要通过繁琐的配置和复杂的代码才能够实现,而在 Spring 中却非常的优雅和简洁。 ③ Spring 是一个 IOC (DI) 和 AOP 容器框架。 ④ Spring 的优良特性 [1] 非侵入式 :基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API (non-instrusive) [2] 依赖注入 : DI —— Dependency Injection ,反转控制 (IOC) 最经典的实现。 [3] 面向切面编程 : Aspect Oriented Programming —— AOP [4] 容器 : Spring 是一个容器,因为它包含并且管理应用对象的生命周期 [5] 组件化 : Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML 和 Java 注解组合这些对象。 [6] 一站式 :在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库(实际上 Spring 自身也提供了表述层的 SpringMVC 和持久层的 Spring JDBC )。 ⑤ Spring

1901怀化学院KHJ错题集

假装没事ソ 提交于 2020-01-14 00:50:11
PTA 错题 结构体 1 . 直接访问就是直接利用变量的地址直接进行访问。T 解: (1)直接访问: int a=0; a=a+1; 这种就属于直接访问变量a这个名字就是你给这块内存取的名字,取a的值的时候就是直接从内存中取出值来 (2)间接访问: int a=0; int *p=&a; *p = (*p)+1; 这种就属于间接访问,p变量的这块内存中存的是a的地址,通过p内存中的地址找到这块内存,取出里边的值,就是间接访问 也就是说:有个中转站的就是间接访问 2.语句int *p,q,r; 定义了3个指针变量。 F 需要全部有 ‘ * ’ Int *不是一体的。 3.语句int *p; *p=50;执行时,不会有任何错误。 F 必须要有一个p的指向变量,p只是一个指针。 4.对于定义int a[10],*p=a; 语句p=a+1;和a=a+1;都是合法的。F p=a+1可以,a=a+1不行;p=a+1为a[1]的值。 5.调用strcmp函数比较字符串大小时,通常较长的字符串会较大。 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。 a<b<c为大小顺序,两个字符串一样返回0,第一个大,返回正整数,第二个大,返回负整数。 6.在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。T 7.下列程序段的输出是____。C

Go语言学习笔记 - 第二章 程序结构(The Go Programming Language)

这一生的挚爱 提交于 2020-01-13 05:17:39
第二章 程序结构 2.1命名 划重点 函数名、变量名、常量名、类型名、语句标号和包名 以一个字母(Unicode字母)或下划线开头,跟任意数量的字母、数字或下划线,大写字母和小写字母是不同的。 关键字(25个) break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var 预定义的名字 (30+个),这些不是关键字,可以再定义中重新使用它们 内建常量: true false iota nil 内建类型: int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr float32 float64 complex128 complex64 bool byte rune string error 内建函数: make len cap new append copy close delete complex real imag panic recover 作用域:内部定义内部有效;外部定义包内有效,名字开头 大写 可在包外部可见。比如: fmt 的 Print 可以在 fmt

C语言类型强制转换

两盒软妹~` 提交于 2020-01-13 04:24:28
C语言类型强制转换 强制类型转换 是通过类型转换运算来实现的。其一般形式为: (类型说明符) ( 表达式 ) 其功能是把表达式的运算结果 强制转换 成类型说明符所表示的类型。 目录 1 基本介绍 2 注意事项 1 基本介绍 编辑 强制类型转换 是通过类型转换运算来实现的。其一般形式为:(类型说明符)( 表达式 )其功能是把表达式的运算结果 强制转换 成类型说明符所表示的类型。自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。例如: (float) a 把a转换为实型,(int)(x+y) 把x+y的结果转换为 整型 。在使用 强制转换 时应注意以下问题: 2 注意事项 编辑 1.类型说明符和 表达式 都必须加括号(单个 变量 可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。 2.无论是 强制转换 或是自动转换,都只是为了本次运算的需要而对 变量 的数据长度进行的临时性转换,而不改变数据说明时对该 变量 定义的类型。 例1: main() { float f=5.75; printf("f=%d,f=%f\n",(int)f,f); } f=5,f=5.750000 将float f 强制转换 成int f float f=5.75;printf("(int)f=%d,f=%f\n",(int)f

管理表记录

萝らか妹 提交于 2020-01-13 04:02:50
插入新记录(默认追加在末尾) mysql > insert into 库 . 表 values ( 值列表 1 ) , ( 值列表 2 ) ; 插入一条记录给所有字段赋值 插入多条记录给所有字段赋值 插入一条记录给指定字段赋值 插入多条记录给指定字段赋值 查询 mysql > select 字段列表 from 库 . 表 [ where 条件 ] ; //字段列表以,间隔 mysql > select * from 表 ; //查看所有字段 多表联查 嵌套查询 连接查询(左/右/内/外连接) 修改字段值 mysql > update 库 . 表 set 字段名 = 值 , 字段名 = 值 ... [ where 条件 ] ; 删除表记录 mysql > delete from 库 . 表 [ where 条件 ] ; 来源: CSDN 作者: baiyuani 链接: https://blog.csdn.net/weixin_45157506/article/details/103833344

python列表的赋值,浅复制和深复制

时光怂恿深爱的人放手 提交于 2020-01-13 00:18:03
1.python列表的赋值 赋值主要是设定了一个变量的引用,赋值主要方式是通过=,*。 a = [[]]*6 a[0].append(1) a[5].append(2) print(a)   显示结果:[[1, 2], [1, 2], [1, 2], [1, 2], [1, 2], [1, 2]] a = [1,2,[3]]b = ab.append(4)print(a,id(a))print(b,id(b)) 显示结果: [1, 2, [3], 4] 2382876458056 [1, 2, [3], 4] 2382876458056 显而易见,不论对于哪一个赋值的变量进行修改,由于引用的内存地址不变,最终修改的内存空间也不会变,所以最终显示结果如上图所示(如果赋值的是数值类型对象,会新建内存空间,形同深复制) 2.python列表的浅复制 python列表的浅复制方式一般是copy()和列表切片。 import copya = [1,2,[3]]b = copy.copy(a)b.append(4)b[2].append(4)print(a,id(a))print(b,id(b)) 显示结果: [1, 2, [3, 4]] 1990656670856 [1, 2, [3, 4], 4] 1990656671112 a = [[1,3],{'a':'b'},4,{4}]b = a