变量

c语言const、volatile问题小结

≡放荡痞女 提交于 2020-03-30 11:45:57
之前百度面试的时候被volatile虐了,内核中很多地方也会用到,这个面试的时候出现概率太大了,所以搜集了一些结果供大家参考,大部分是百度到的,说得挺明确的,以后读代码的时候遇到了再更新。 百度知道有人提如下问题: #include "stdio.h" int main(void){ const char i = 1; char * j = (char *)&i; printf("%d,%d,%p,%p\n",i,*j,&i,j);//1,1 *j = 2; printf("%d,%d,%p,%p\n",i,*j,&i,j);//1,2 *j = 3; printf("%d,%d,%p,%p\n",i,*j,&i,j);//1,3 } 为什么i没有改变呢,各位运行也会发现,他们的地址都是一样的。 醉了,我debug的时候,i也是随着j改变的,但是输出时,i就变成1了。希望各位能够从编译的角度上说一下这个问题。 我对答案有稍微修改,对比vc编译结果差不多所以就引用别人的图了 1.这是有const修饰与无const修饰的汇编代码 变量i存储在eax寄存器中,有const修改表达寄存器的值不允许被修改 第22行的时候,对*j=2;赋值时,有const修饰的会对edx进行操作 而没有const进行修饰的就是直接对eax进行操作. 至于编译器调试模式下 , 看见的 i 的值变成 2,

CVTE电话面

我只是一个虾纸丫 提交于 2020-03-30 10:15:35
1.为什么使用Vuex来管理状态 2.还有什么多级组件的传递方式   $attrs/$listeners:实现多层嵌套传递,$attrs包含没有被props声明的属性(不包括class和style),如果某个prop被子组件声明了(这个属性已经再子组件的props中),再子组件的$attr会把声明的prop踢出,并且可以通过v-bind=“$attrs”传入内部组件。inheritAttrs:false可以关闭自动挂载到根元素上的没有再props声明的属性。   $listeners:包含了父作用域中的(不含.native修饰器的)v-on事件监听器,它可以通过v-on=“$listeners”传入内部组件。 Provide/inject:主要解决了跨级组件间的通信问题,祖先通过provider来提供变量,然后再子孙组件中通过inject来注入变量。但是provide和inject绑定并不是响应式的,如果传入例如一个可监听的对象,那么其对象的属性还是可响应的。 3.Vue的双向绑定 https://segmentfault.com/a/1190000006599500 mvvm 模式实现双向绑定,view与model不直接进行交互利用VM来实现数据的交互,MVVM 作为数据绑定的入口,整合 Observer(数据监听器,能够对数据对象的所有属性进行监听

Node.js 函数

久未见 提交于 2020-03-30 04:27:17
在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。 Node.js中函数的使用与Javascript类似,举例来说,你可以这样做: function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello"); 以上代码中,我们把 say 函数作为execute函数的第一个变量进行了传递。这里返回的不是 say 的返回值,而是 say 本身! 这样一来, say 就变成了execute 中的本地变量 someFunction ,execute可以通过调用 someFunction() (带括号的形式)来使用 say 函数。 当然,因为 say 有一个变量, execute 在调用 someFunction 时可以传递这样一个变量。 匿名函数 我们可以把一个函数作为变量传递。但是我们不一定要绕这个"先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数: function execute(someFunction, value) { someFunction(value); } execute

Node.js 函数

微笑、不失礼 提交于 2020-03-30 04:24:21
在JavaScript中,一个函数可以作为另一个函数接收一个参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。 Node.js中函数的使用与Javascript类似,举例来说,你可以这样做: function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello"); 以上代码中,我们把 say 函数作为execute函数的第一个变量进行了传递。这里返回的不是 say 的返回值,而是 say 本身! 这样一来, say 就变成了execute 中的本地变量 someFunction ,execute可以通过调用 someFunction() (带括号的形式)来使用 say 函数。 当然,因为 say 有一个变量, execute 在调用 someFunction 时可以传递这样一个变量。 匿名函数 我们可以把一个函数作为变量传递。但是我们不一定要绕这个"先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数: function execute(someFunction, value) { someFunction(value); } execute

Node.js 函数

不问归期 提交于 2020-03-30 04:23:10
Node.js 函数 在JavaScript中,一个函数可以作为另一个函数的参数。我们可以先定义一个函数,然后传递,也可以在传递参数的地方直接定义函数。 Node.js中函数的使用与Javascript类似,举例来说,你可以这样做: function say(word) { console.log(word); } function execute(someFunction, value) { someFunction(value); } execute(say, "Hello"); 以上代码中,我们把 say 函数作为execute函数的第一个变量进行了传递。这里返回的不是 say 的返回值,而是 say 本身! 这样一来, say 就变成了execute 中的本地变量 someFunction ,execute可以通过调用 someFunction() (带括号的形式)来使用 say 函数。 当然,因为 say 有一个变量, execute 在调用 someFunction 时可以传递这样一个变量。 匿名函数 我们可以把一个函数作为变量传递。但是我们不一定要绕这个"先定义,再传递"的圈子,我们可以直接在另一个函数的括号中定义和传递这个函数: function execute(someFunction, value) { someFunction(value); }

小白学习之路,基础三(函数)

爱⌒轻易说出口 提交于 2020-03-30 03:44:55
一,函数的基本介绍 首先谈到函数,相信大家都不陌生,不管是其他语言都会用到,可能就是叫法不一样。就我知道的跟python中函数类似的,在C中只有function,在Java里面叫做method,在js中也是叫function。函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 函数有下面三点好处: 1.能够减少重复代码的使用 2.让你的程序有更好的扩展性 3.可以让你的程序变得更加容易维护 下面我们就来讲一下怎么定义一个函数 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 。 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 补充知识:return不返回值的时候有三种方法:不写return,只写一个return,或者return None。return当有多个返回值的时候用逗号分隔。接收的时候可以用一个变量接收(元组),也可以用多个变量接收。 二,函数的参数 函数可以传参

研一寒假04_static&组合类型

给你一囗甜甜゛ 提交于 2020-03-30 02:41:08
#--------------------------------static&组合类型----------------------------------# /* c++管理数据内存方式 */ //自动存储:在函数内部定义的常规变量使用中断存储空间,称为自动变量(存储在栈中),意味着他们在所属的函数被调用时自动产生,在函数结束时消亡(内存自动释放) //静态存储:在函数外面定义或者是使用关键字static定义的变量,在整个程序执行期间都存在,例如:static double fee=56.50; //动态存储:使用new创建和使用delete释放内存的变量,new和delete管理一个内存池,这个内存池有别于用于静态存储和自动存储的内存,数据的生命周期不完全受函数的生存或程序控制,程序员有更大的控制权 //内存泄漏:使用new分配内存之后,没有使用delete释放内存 /* 组合类型 */ #include <iostream> //新建一个结构 struct inflatable { int year; int month; }; //主函数 int main() { //使用新类型定义结构 inflatable s01,s02,s03; //使用类型inflatable创建结构变量s01,s02,s03 s01.year = 1998; //给s01中的成员year赋值 /

Debug版本和Release版本的区别

这一生的挚爱 提交于 2020-03-29 19:17:15
一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重要,通常他们也不会引起 Release 版错误,在此不讨论) Debug 版本: /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对 assert函数) /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过 程中如果修改了源代码不需重新编译 /GZ 可以帮助捕获内存错误 /Gm 打开最小化重链接开关,减少链接时间 Release 版本: /MD /ML 或 /MT 使用发布版本的运行时刻函数库 /O1 或 /O2 优化开关,使程序最小或最快 /D "NDEBUG" 关闭条件编译调试代码开关(即不编译assert函数) /GF 合并重复的字符串,并将字符串常量放到只读内存,防止 被修改

尝试安装和配置JDK,并给出安装、配置JDK的步骤

ε祈祈猫儿з 提交于 2020-03-29 17:21:18
1.解压jdk1.8.0_91_x64.rar 2.同时按住win键和pause键,弹出系统属性窗口,选择高级系统设计选项。 3.然后单击环境变量按钮。 4.弹出环境变量对话框后,点击新建按钮,新建系统变量。 5.弹出新建系统变量对话框后,在变量名文本框中输入“”JAVA-HOME“、在变量名文本框中输入JDK的安装路径d:\Java.jdk1.80-91\。单击确定。 6.在系统变量中查找path变量,如果不存在,则新建一个,否则选中该变量单击编辑,打开编辑系统变量对话框,。在变量值文本框起始位置添加:%JAVA-HOME%\bin;。 7.JDK完成后需要检测一下, 按住win键和R键 ,打开运行窗口输入 cmd ,确定,将进入DOS环境中,在命令提示符后面输入 javac 按Enter键,系统会输出java的一些信息,说明配置成功了。 来源: https://www.cnblogs.com/smile-dream/p/5863500.html

java中Super到底是什么意思

一个人想着一个人 提交于 2020-03-29 13:31:30
要说super就先要说this。 "this",作为一个特殊的关键字,它的规则如下: 1。可以表示构造函数传递。this(a,b)表示调用另外一个构造函数。这里面的this就是一个特殊语法,不是变量,没有什么类型。 2。可以在一个类的非static成员内部使用,表示当前这个对象。此时,this就是一个final的普通变量,它有静态类型,就是这个类C本身;它有动态类型,就是当前这个对象的类型。你可以对它调用成员函数,把它传递给别的函数,等等等等。只要一个C类型的final变量可以出现的地方,它就可以出现。 "super"。它和"this"类似,但是也有不同的地方。 1。表示调用父类的构造函数。也是一个特殊语法,不是变量,没有什么类型。 2。可以在一个类的非static成员内部使用。比如super.method()。 但是,注意,这个super.method()只是长得跟some_var.method()一样,一个语法糖而已。实质上,"super"根本不是一个变量。 为什么不是?因为如果是就坏了。java里面有一个金科玉律:任何public非static函数的调用都是多态的。 所以,如果super是个变量,也指向当前对象,那么,不管super的静态类型是什么super.method()必然调用的是子类的那个版本,而不会是我们期望的,静态地选择父类的那个版本。 所以,你只要把super