我们正在努力恢复Google Play商店上的Unionpedia应用程序
传出传入
🌟我们简化了设计以优化导航!
Instagram Facebook X LinkedIn

指標 (電腦科學)

指数 指標 (電腦科學)

在计算机科学中,指標(Pointer),是程式語言中的一类数据类型及其物件或變數,用來表示或儲存一個記憶體位址,這個位址的值直接指向(points to)存在该地址的对象的值。 指標參考(reference)了記憶體中一個位址。通過被稱為指標反參考(dereferencing)的動作,可以取出在那個位址中儲存的值。保存在指標指向的位址中的值,可能代表另一個變數、結構、物件或函數。但是從指標值是無法得知它所參照的記憶體中儲存了什麼資料型別的資訊。可以打个比方,假設將電腦記憶體當成一本書,一張內容記錄了某個頁碼加上行號的便利貼,可以被當成是一個指向特定頁面的指標;根據便利貼上面的頁碼與行號,翻到那個頁面,把那個頁面的那一行文字讀出來,就相當於是對這個指標進行反參考的動作。可做一类比以增强对指针的理解:整形(integral)也是一类数据类型及其物件或變數,可定义具体的数据类型如短整形(short)、长整形(long)、超长整形(long long)、无符号整形(unsigned)等等;也可以用于称呼整形值、整形对象、整形变量等。又如,一个浮点指针(float *),可称作指向了一个浮点类型的对象。 在高級語言中,指標有效的取代了在低階語言(如匯編語言與機器碼)直接使用内存地址。但它可能只適用於合法位址之中。因為指標更貼近硬體,編譯器能夠很容易的將指標翻譯為機械碼,這使指標操作時的負擔較少,因此能夠提高程式的運作速度。 使用指標能夠簡化許多資料結構的實作,例如在遍歷字串,查取表格,控制表格及樹狀結構上。對指標進行複製,之後再解參照指標以取出資料,無論在時間或空間上,都比直接複製及存取資料本身來的經濟快速。指標表示法較為直覺,使程式的表達更為簡潔,同時也能夠提供動態機制來建立新的節點。 在程序編程(procedural programming)中,指標也被用來保存系統呼叫流程,以及動態連結資料庫(DLL)的進入點位址。在物件導向編程中,使用函數指標(Function pointer)來綁定方法(method),常見於虛擬方法表(Virtual method table)中。 但是指標本身也存在一些可被滥用之处,在存取某個資料結構時,可能會超出可用範圍,使軟體或作業系統出現異常,嚴重時可造成當機。利用指標去存取或修改非合法可取用的資料,也可能造成安全性問題。为此,C与C++语言规定指针类型为强类型,即指针值不仅是一个内存地址,同时它的数据类型说明了存在这个地址可以安全访问的地址的范围,例如,float*可以访问4个字节的内存空间,double*可以访问8个字节的内存空间。 許多程式語言中都支援某種形式的指標,最著名的是C語言,但是有些程式語言對指標的運用採取比較嚴格的限制。因為指標的機制比較簡單,其功能可以被集中重新實作成更抽象化的參照(reference)資料形別,如Java一般避免用指针,改為使用參照。.

目录

  1. 24 关系: 单向链表可移植文档格式乱序执行保護模式分頁表克隆 (编程学)C++C语言缓冲区过读链表零复制IUnknownSwift (程式語言)TypedefWild branchWindows on WindowsWoW64X32 ABIX算法指针 (信息学)指針 (電腦科學)指標指標 (資訊科學)海森堡bug

单向链表

单向链表(又名单链表、线性链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过从头部开始,依序往下讀取。.

查看 指標 (電腦科學)和单向链表

可移植文档格式

可移植文档格式(Portable Document Format,简称PDF)是一種用獨立於應用程式、硬體、作業系統的方式呈現文檔的檔案格式。Adobe Systems Incorporated,, Nov 2006, p. 33.

查看 指標 (電腦科學)和可移植文档格式

乱序执行

在计算机工程领域,乱序执行(错序执行,out-of-order execution,简称OoOE或OOE)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。在这种范式中,处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。.

查看 指標 (電腦科學)和乱序执行

保護模式

保護模式(Protected Mode,或有時簡寫為 pmode)是一種80286系列和之後的x86兼容CPU的操作模式。保護模式有一些新的特性,如記憶體保護,分頁系統以及硬體支援的虛擬記憶體,能夠增強多任务处理和系統穩定度。現今大部分的x86作業系統都在保護模式下運行,包含Linux、FreeBSD、以及微軟Windows 2.0和之後版本。 另外一種286和其之後CPU的操作模式是真實模式,這是一種向前相容且關閉了保护模式這些特性的CPU运行模式,用來讓新的晶片可以執行舊的軟體。所有的x86 CPU都是在真實模式下開機,來確保傳統作業系統的相容性。為了使用保護模式的特性,要由程式主動地切換到保護模式。在現今的電腦上,這種切換通常是作業系統在開機時候完成的第一件工作。當CPU在保護模式下運行時,可以使用虚拟86模式來執行為真實模式設計的程式碼。 儘管用軟體的方式也有某些可能在真實模式的系統下使用多工,但保護模式下記憶體保護的特色,可以避免有問題的程式破壞其他工作或是作業系統核心所擁有的記憶體。保護模式也有中斷正在執行程式的硬體支援,可以實現先佔式多工。 大部分可以使用保護模式的CPU也擁有32位元暫存器的特性(例如80386系列和其後任何的晶片),導入了融合保護模式而成為32位元處理的概念。80286晶片雖有支援保護模式,但是仍然只有16位元暫存器。Windows 2.0和之後版本中的保護模式增強稱為"386增強模式",是因為他們除了保護模式外,還需要32位元的暫存器,並且無法在286上面執行(即使286支援保護模式)。 即使在32位元晶片上已經打開了保護模式,但是為了仿照IBM XT系統記憶體連續的設計特性,1 MiB以上的記憶體並無法存取。這種限制可以由打開A20总线來迴避。 在保護模式下,前面32個中斷都是保留給CPU例外處理用。例如,中斷0D(十進制13)是一般保護模式錯誤,而中斷00是除以零。.

查看 指標 (電腦科學)和保護模式

分頁表

分页表是一种数据结构,它用于计算机操作系统中的虚拟内存系统,其存储了虚拟地址到物理地址间的映射。虚拟地址在访问进程中是唯一的,而物理地址在硬件(比如内存)中是唯一的。.

查看 指標 (電腦科學)和分頁表

克隆 (编程学)

本條目是描述计算机编程学中的克隆,有關克隆的其它用法,請參見克隆 (消歧义)。 在计算机科学中,“克隆”指对一个对象制作一个完全相同的副本,其常常在原型程式設計中的编程范型或者面向对象程序设计(OOP)中用到。.

查看 指標 (電腦科學)和克隆 (编程学)

C++

C++是一種使用廣泛的计算机程序設計語言。它是一種通用程序設計語言,支援多重编程模式,例如程序化程序設計、数据抽象、面向对象程序設計、泛型程序設計和设计模式等。 比雅尼·斯特勞斯特魯普博士在贝尔实验室工作期间在20世紀80年代發明並實現了C++。起初,這種語言被稱作“C with Classes”(“包含‘類’的C語言”),作為C語言的增強版出現。随后,C++不斷增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多繼承(multiple inheritance)、标准模板库(standard template library, STL)、异常处理(exception)、运行时类型信息(Runtime type information)、命名空間(namespace)等概念逐漸納入標準。1998年,國際標準組織(ISO)頒布了C++程序設計語言的第一個國際標準ISO/IEC 14882:1998,目前最新标准为ISO/IEC 14882:2017。根據《C++編--程思想》(Thinking in C++)一書,C++與C的代码执行效率往往相差在±5%之間。 C++語言發展大概可以分為三個階段:第一階段從80年代到1995年。這一階段C++語言基本上是傳統類型上的面向对象語言,並且憑藉着接近C語言的效率,在工業界使用的開發語言中佔據了相當大份額;第二階段從1995年到2000年,這一階段由於標準模板庫(STL)和後來的Boost等程式庫的出現,泛型程序設計在C++中佔據了越來越多的比重。當然,同時由於Java、C#等語言的出現和硬體價格的大規模下降,C++受到了一定的衝擊;第三階段從2000年至今,由於以Loki、MPL(Boost)等程式庫為代表的產生式編程和模板元編程的出現,C++出現了發展歷史上又一個新的高峰,這些新技術的出現以及和原有技術的融合,使C++已經成為當今主流程序設計語言中最複雜的一員。.

查看 指標 (電腦科學)和C++

C语言

C是一种通用的程式語言,广泛用于系统软件与应用软件的开发。于1969年至1973年間,為了移植與開發UNIX作業系統,由丹尼斯·里奇與肯·汤普逊,以B语言为基础,在贝尔实验室設計、开发出來。 C语言具有高效、灵活、功能丰富、表达力强和較高的可移植性等特点,在程式設計中备受青睐,成为最近25年使用最为广泛的编程语言。目前,C语言編譯器普遍存在於各種不同的操作系统中,例如Microsoft Windows、macOS、Linux、Unix等。C語言的設計影響了众多後來的程式語言,例如C++、Objective-C、Java、C#等。 二十世纪八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標準局為C語言訂定了一套完整的國際標準語法,稱為ANSI C,作為C語言的標準。二十世纪八十年代至今的有关程式開發工具,一般都支持符合ANSI C的語法。.

查看 指標 (電腦科學)和C语言

缓冲区过读

在计算机安全和程序设计中,缓冲区过读是一类程序错误,即程序从緩衝器读出数据时超出了边界,而读取了(或试图读取)相邻的内存。这是有违的一个例子。 通过构造恶意输入,使得缺乏边界检查的程序读取不该访问到的内存,可以触发缓冲区过读,如在心脏出血漏洞里的那样。引发的原因也可能仅仅是编程中的错误。这可能会导致异常的程序行为,包括内存访问错误、不正确的结果、或系统安全性损害。因而,有许多漏洞都因其而生,还可能被恶意利用以访问特权信息。 通常与缓冲区过读相联系的编程语言语言包括C和C++,这些语言都没有提供内置的保护机制,以防止使用指针访问虚拟内存任意位置的数据,并且不会自动检查读取该内存块的数据是否安全;对应的例子如试图读取比数组更多的元素,以及没有向末尾追加终止符。边界检查可以防止缓冲区过读,而模糊测试有助于检测出这些错误。.

查看 指標 (電腦科學)和缓冲区过读

链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而顺序表相应的时间复杂度分别是O(logn)和O(1)。 使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 在计算机科学中,链表作为一种基础的数据结构可以用来生成其它类型的数据结构。链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接("links")。链表最明显的好处就是,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换。而链表是一种自我指示数据类型,因为它包含指向另一个相同类型的数据的指针(链接)。链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。链表有很多种不同的类型:单向链表,双向链表以及循环链表。 链表可以在多种编程语言中实现。像Lisp和Scheme这样的语言的内建数据类型中就包含了链表的存取和操作。程序语言或面向对象语言,如C/C++和Java依靠易变工具来生成链表。.

查看 指標 (電腦科學)和链表

零复制

零复--制(Zero-copy;也译零拷--贝)技术是指计算机执行操作时,CPU不需要先将数据从某处内存复制到另一个特定区域。这种技术通常用于通过网络传输文件时节省CPU周期和内存带宽。.

查看 指標 (電腦科學)和零复制

IUnknown

在程序设计中,IUnknown介面是组件对象模型(COM)中的基礎介面。COM規格書中規定COM物件至少要實現此一介面,而且其他所有的COM介面都需要衍生自IUnknown介面。IUnknown提供所有COM物件都支援的兩種基本特性:利用引用计数來進行物件生命周期管理,以及存取許多事先定義的介面。 IUnknown介面會包括一個指向的指標,虛擬方法表是一個有許多函数指针的列表,函数指针會指向許多實現IUnknown介面所宣告的函數,以和介面中宣告順序相同的方式排列。而進程內呼叫產生的大致和C++中呼叫虛擬方法的開銷相近。.

查看 指標 (電腦科學)和IUnknown

Swift (程式語言)

Swift是一種支持多编程范式和編譯式的編程語言,是用來撰寫macOS/OS X、iOS、watchOS和tvOS的语言之一。 2014年,其在苹果开发者年会(WWDC)發布。設計Swift時,蘋果公司有意讓Swift與Objective-C共存在蘋果公司的作業系統上。.

查看 指標 (電腦科學)和Swift (程式語言)

Typedef

在C和C++程式語言中,typedef是一個關鍵字。它用來對一個資料類型取一個別名,目的是為了使原始碼更易於閱讀和理解。它通常用於簡化宣告複雜的類型組成的結構 ,但它也常常在各種長度的整數資料型別中看到,例如size_t和time_t。.

查看 指標 (電腦科學)和Typedef

Wild branch

Wild branch是電腦程式中的一個名詞,是指GOTO指令(分支)的目的位置是不確定、隨機或是未預期的,這常常是因為程序錯誤,指標陣列index被破壞的結果。之所以用Wild這個形容詞來形容,也是因為其結果難以預測。Wild branch的偵測通常比較困難,一般會由錯誤的結果來識別(例如目的位址不存在,或是其位址沒有有效的程式碼,因此引發錯誤)。有時會用调试工具以及像之類的程式來確認出現Wild branch的原始位置。.

查看 指標 (電腦科學)和Wild branch

Windows on Windows

Windows on Windows,常指16位WOW、WOWEXEC或简称WOW。它是一个Microsoft Windows NT操作系统家族中32位版本的兼容层,目的是扩展以为运行为Windows 3.x编写的旧式Win16应用程序提供有限支持。64位系统上的“WOW”通常指在64位Windows上支持32位应用程序的WOW64。.

查看 指標 (電腦科學)和Windows on Windows

WoW64

WoW64(Windows 32-bit on Windows 64-bit)是Microsoft Windows操作系统的一个子系统,它提供在所有Windows 64位系统上运行32位元应用程序的能力——这包括Windows XP Professional x64 Edition、IA-64和Windows Server 2003的64位版本,以及Windows Vista、Windows Server 2008、Windows 7、Windows 8、Windows Server 2012、Windows 8.1和Windows 10的64位版本。在Windows Server 2008 R2 Server Core中它成为了可选组件,并在Nano Server中不再提供。WoW64旨在解决32位与64位Windows中的许多差异,特别是涉及到Windows本身的结构变化。.

查看 指標 (電腦科學)和WoW64

X32 ABI

x32 ABI(x32应用程序二进制接口)是一种ABI及Linux内核接口之一。它允许程序得到x86-64的优点(较大的CPU寄存器号码,更佳的浮点性能,更快的地址无关代码共享库,通过寄存器传递函数参数,更快的系统调用指令),而使用32位指针,从而避免了对64位指针的开销。.

查看 指標 (電腦科學)和X32 ABI

X算法

在计算机科学中,X算法可用来求解精确覆盖问题。此名称最早在高德纳的论文《舞蹈链》中出现,他认为此算法是“试错法中最显而易见”的。 就技术而言,X算法是一个深度优先的不确定性回溯算法。由于X算法是一个解决精确覆盖问题的简洁方法,高德纳希望通过该算法体现舞蹈链数据结构的高效性,他把使用后者的X算法称为DLX。 X算法用由0和1组成的矩阵A来表示精确覆盖问题,目标是选出矩阵的若干行,使得其中的1在所有列中出现且仅出现一次。 X算法的步骤如下: |.

查看 指標 (電腦科學)和X算法

指针 (信息学)

#重定向 指標 (電腦科學).

查看 指標 (電腦科學)和指针 (信息学)

指針 (電腦科學)

#重定向 指標 (電腦科學).

查看 指標 (電腦科學)和指針 (電腦科學)

指標

指標可能指:.

查看 指標 (電腦科學)和指標

指標 (資訊科學)

#重定向 指標 (電腦科學).

查看 指標 (電腦科學)和指標 (資訊科學)

海森堡bug

在程序设计术语中,海森堡bug(heisenbug)是指在尝试研究它时似乎会消失或者改变行为的bug(程序错误)。该词汇是物理学家维尔纳·海森堡名字的双关语,他最先断言了量子力学的观察者效应——观察系统的行为不可避免地将改变其状态。电子学中的传统用语则是,指连接一个到设备将改变其行为。 类似的词语有玻尔bug(bohrbug)、曼德博bug(mandelbug)和薛定谔bug(schrödinbug),它们偶尔被用于指代其他类型的非寻常软件缺陷,但通常以开玩笑的心态使用。.

查看 指標 (電腦科學)和海森堡bug