1. 程式人生 > >JS 中指標的用法

JS 中指標的用法

在JS呼叫很少有呼叫指標的地方,但是當直接呼叫DLL庫時,需要用到相關指標。

有char* , void* ,int* struct * 函式指標,指標的指標….等。

1. char *
如下為char * 型別,沒有實際的記憶體地址。就等價於char *.

var m_char = ref.refType('char');

如下為實際的char *地址,先申請記憶體,然後進行取地址操作。

var m_data = ref.alloc('char');
var m_charPtr = m_data.ref();

2. void *
如下為void* 型別,沒有實際的記憶體地址。就等價於void*.

var m_char = ref.refType('void');

如下為實際的void *地址,先申請記憶體,然後進行取地址操作。

var m_data = ref.alloc('void');
var m_voidPtr = m_data.ref();

3. int *

int 指標和char 的用法一致。

4. struct *

結構體指標為對結構體的引用。

定義結構體需要先引用ref-Struct模組。

var Struct = require("ref-Struct);

先宣告結構體

var m_Struct = Struct({ 'arg1':'int', 'arg2':'int' });

定義一個結構體變數,賦值

var m_StructValue = new m_Struct();
m_StructValue.arg1 = 1;
m_StructValue.arg2 = 2;

取地址

var m_StructPtr = m_StructValue.ref();

5. 函式指標
在JS 中,其實函式名就是一個函式指標。可以直接拿來用。

例如我宣告一個回撥函式

var dll = require("ffi");
var callBack = dll.callback('bool',['pointer','int','int'],Fun_callback);

其中Fun_callback為函式指標。
可以如下方式來實現

function Fun_callback() { console.log("this is callback!"); }

6. 指標的指標

指標的指標是一個比較繞口的東西。
可以這樣理解: 指標1 指向 地址1 , 指標2 指向地址2 ,而地址2的值就是指標1。 那麼指標2就是一個指標的指標,也可以稱之為二維指標。

先宣告一個void *指標

var m_Hand = ref.alloc('void');
var HAND= m_Hand.ref();

再取指標的地址

var ptr = HAND.ref();

以上均為個人見解,如果建議,請留言,謝謝。

轉載請註明出處

相關推薦

jstypeof用法詳細介紹

css -name iter owin lease implement Language addition 並不是

Vue.js watch用法

假如有如下程式碼 <div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text" v-model="firstName"><

jscreateTextRange用法(focus)

createtextrange createrange區別:物件或元素不同,雖然都是返回TextRange。 例如:     var r=document.body.createTextRange()     var r=document.createRange(

JScall用法理解

call()方法是借用建構函式來實現繼承,即在子型別建構函式的內部呼叫超型別建構函式。 我理解的call()的作用就是改變上下文,即在以下程式碼中的 function subtype(){

vue.js的data的用法

fun div tle new end 用法 pan 位置 turn data在vue框架中位置不一樣,用法也不一樣。簡單地說,在實例中data是一個對象,在組件中data就得是函數返回對象。 new Vue( { data : { tit

jsslice、splice用法與區別

delet 內容 title pan ont 指定 至少 一個 拷貝 1.slice(start,end)(參數可選) slice() 方法返回一個從開始到結束(不包括結束)選擇的數組的一部分淺拷貝到一個新數組對象。原始數組不會被修改。 var a = [‘a‘, ‘b‘

jsarr.sort的用法

數組 blog tool dem 默認 tar 返回 java document sort(sortfunction)為JS的數組對象(Array)的一個方法,提供排序功能 參數 sortFunction 為可選項,是用來確定排序原則的js函數, 這個函數有兩個參數,分別代

js的||與&&用法

defined clas efi blog 執行 urn cti 用法 表達式 &&和||在JQuery源代碼內尤為使用廣泛,由網上找了些例子作為參考,對其用法研究了一下: &&: function a(){ alert("

jseval,arguments與異常處理的用法-基礎知識總結------彭記(017)

報錯 字符串 nts 字符 number 拖動 ron cnblogs 數組 eval的使用: <script> /*eval的作用: * 1.將字符串當成js代碼來執行 * 2.可以將json格式的字符串轉換為js對象*/

jsprompt()的用法

javascriptalert() 彈出個提示框 (確定) confirm() 彈出個確認框 (確定,取消) prompt() 彈出個輸入框 讓你輸入東西使用消息框 使用警告、提示和確認 可以使用警告、確認和提示消息框來獲得用戶的輸入。這些消息框是 window 對象的接口方法。由於 window 對象位於對

JSthis的四種用法

syn pac copy title pan 復制 comment test code 1.在一般函數方法中使用 this 指代全局對象 1 2 3 4 5 function test(){     this.x = 1;     alert(this.

jsreturn的用法

時間 取消 行為 點擊 但是 col 沒有 null fun 今天看到一篇文章,介紹的是js中return的用法,感觸很深。(類似於JAVAreturn) 在大多數情況下,為事件處理函數返回false,可以防止默認的事件行為.例如,默認情況下點擊一個<a>

JSevery()和some()的用法

ray scrip highlight bsp 函數 如果 urn return pre every()與some()方法都是JS中數組的叠代方法。 every()是對數組中每一項運行給定函數,如果該函數對每一項返回true,則返回true。 some()是對數組中每一項運

jswindow.location.search的用法和作用。

bst 地址 用法 屬性獲取 net bstr src log 協議 用該屬性獲取頁面 URL 地址: window.location 對象所包含的屬性 屬性描述 hash 從井號 (#) 開始的 URL(錨) host 主機名和當前 URL 的端口號 h

jssplice()的用法

object ogl em1 orange gpo afa type 所有 bject 實例 移除數組的第三個元素,並在數組第三個位置添加新元素: var fruits = ["Banana", "Orange", "Apple", "Mango"];fruits.spli

jsarguments的用法

fun 功能 指定 基本 輸出 會有 進行 for ron 了解這個對象之前先來認識一下javascript的一些功能: 其實Javascript並沒有重載函數的功能,但是Arguments對象能夠模擬重載。Javascrip中國每個函數都會有一個Arguments對象實例

jsdocument的用法小結(一)

() 創建 odi seo 開始 func click style onclick document常用屬性:   document.title//設置文檔標題,與HTNL中的title標簽等價   document.bgColor//設置頁面背景顏色   document

Js獲取時間 new date()的用法

ets test getdate 轉換成 添加 問題 mar div day Js中獲取時間 new date()的用法 獲取時間: var myDate = new Date();//獲取系統當前時間 myDate.getYear(); //獲取當前年份(2位)

淺談JS的!=、== 、!==、===的用法和區別 JSNull與Undefined的區別 讀取XML文件 獲取路徑的方式 C#Cookie,Session,Application的用法與區別? c#反射 抽象工廠

main 收集 data- 時間設置 oba ase pdo 簡單工廠模式 1.0 var num = 1; var str = ‘1‘; var test = 1; test == num //true 相同類型 相同值 te

js的||和&&的用法

pos AR 規則 pan 隱式 技術 執行 OS 分享 與其他語言不同,在JS中,a&&b或者a||b返回的是要麽是a,要麽是b;而其他語言中返回的是true or false 對於js中的或與運算,需要隱式的轉換為boolean類型再來運算;轉換規則為: