HSH's Blogs

  • Home

  • Tags

  • Categories

  • Archives

dll

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

visual studio 生成dll

dll是C中的动态库,在程序执行时,被动态加载进来;

  • 对于函数增加前缀:__declspec(dllexport)
  • 更改项目属性,将生成结果该为dll;
  • 点击生成,生成对应的解决方案;
1
2
3
4
5
6
__declspec(dllexport) void plugin(){
// 获取到对应的内存地址
int* p = 0x2ff9d8;
// 修改指定内存地址的内容
*p = 999;
}

静态库与动态库

静态库与动态库的区别:

静态库(.a)只能使用在一个exe程序中,打包时,会被打包进行exe程序中;

动态库(.dll)能被多个程序共用,打包时不会被打进exe中,而是单独存在;

指针

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

指针

指针存储的是变量的内存地址

1
2
3
4
5
6
7
void main(){
int i = 60;
// 创建一个int类型的指针,并将i的地址赋给它
int* p = &i;
printf("%#x\n", p);
system("pause");
}

在指针中,* 称为取内容运算符,指针变量指向的是变量的地址,而拥有了变量的地址,我们可以直接通过指针操作其指向的地址中的内容;

Read more »

C与Java互操作

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

JNI读取Java成员变量类型对应的签名

C访问Java中对应的成员变量,需要根据变量名和变量签名来定位变量;
image

Java方法签名:全类名.方法名(形参数据类型列表)返回值数据类型

其中的返回数据类型的签名与变量有区别:
image

Read more »

jni

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

JNI数据类型

JNI基本数据类型是Java基本数据类型和C数据类型之间的桥梁;

Java数据类型 –> JNI数据类型 –> C数据类型
boolean jboolean
byte jbyte
char jchar
short jshort
int jint
long jlong
float jfloat
double jdouble
void void

Read more »

动态内存分配

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

C语言内存分配

  • 栈区(stack):静态内存区,声明的基本数据类型和类的引用保存在该区,栈区的大小是由操作系统动态配置的(自动分配,自动释放);
    栈区的较小,一般只有2M(与系统类型有关);
  • 堆区(heap):堆区由程序员分配和释放,最大能够分配操作系统内存的80%;
  • 全局区或静态区
  • 字符常量区
  • 程序代码区
    Read more »

C基础

Posted on 2018-07-29 | Edited on 2019-03-21 | In C++

system函数

位于stdio.h,用于调用系统的函数;

1
2
3
4
// 停止当前函数
system("pause"); // 等价(等待输入):getchar();
// 调出windows绘图软件
system("mspaint");

Read more »

ES6新特性

Posted on 2018-07-28 | Edited on 2018-07-29 | In JavaScript

常量

可以使用const来声明一个常量;

1
2
3
4
5
'use strict';

const PI = 3.14;
PI = 3; // 某些浏览器不报错,但是无效果!
PI; // 3.14

Read more »

闭包

Posted on 2018-07-28 | Edited on 2018-07-29 | In JavaScript

闭包

函数式编程的世界中,闭包的作用等价于面向对象编程中的类!

  • 闭包可以认为是携带状态的函数,它能让其中的临时变量的生命周期得到无限的延长,因为闭包函数的执行周期是无限的!
  • 闭包每次返回的函数都是一个全新的函数实例对象,但是对于这些新的函数实例对象,外部函数的临时变量是唯一的,即是所有函数实例对象所共享的!
  • 闭包能够对临时变量进行封装,使其达到私有变量的效果,外部代码无法访问到(函数科里化)!
    Read more »

生成器

Posted on 2018-07-28 | Edited on 2018-07-29 | In JavaScript
  • generator通过function* 进行定义,并且除了return语句,还可以使用yield进行返回数据;
1
2
3
4
5
6
7
8
9
10
11
12
13
function* fib(max) {
var
t,
a = 0,
b = 1,
n = 0;
while (n < max) {
yield a;
[a, b] = [b, a + b];
n ++;
}
return;
}
Read more »

函数

Posted on 2018-07-28 | Edited on 2018-07-29 | In JavaScript

arguments关键字

arguments是函数内部的关键字,可以用来获取传给函数的所有参数,

1
2
3
4
5
6
7
function foo(x) {
console.log('x = ' + x); // 10
for (var i=0; i<arguments.length; i++) {
console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
}
}
foo(10, 20, 30);

Read more »
1…5678

黄声焕

71 posts
9 categories
21 tags
© 2019 黄声焕
Powered by Hexo v3.7.1
|
Theme — NexT.Gemini v6.3.0