C 语言中的 Near、Far 和 Huge 指针2024年8月28日 | 阅读 4 分钟 在本文中,我们将学习一些在早期的 Ms-Dos 时代,通常在 16 位 Intel 架构中使用的旧概念,但如今已不再常用。尽管如此,这些概念仍然非常重要,因为它们就像是当前技术的基石。然而,根据内存模型和段,指针可以分为三种类型,它们如下:
Near 指针一般来说,我们可以认为 near 指针用于存储地址,其最大大小仅为 16 位。使用 near 指针,我们无法存储大于 16 位大小的地址。然而,我们可以存储所有在 16 位限制内的其他较小地址。您可能会认为 16 位有点小,因为我们一次只能访问 64KB 的数据。因此,它被认为是 near 指针的主要缺点之一,这就是为什么它不再常用。让我们看看一些有助于我们理解 near 指针的其他重要要点。 语法 语法如下: 以下语句为变量 s 声明了一个 near 指针 让我们看看一些有助于我们理解“Near”指针的其他重要要点。
为了更详细地理解“Near”指针,让我们看一个例子 示例 输出 2 Far 指针一般来说,Far 指针通常被认为是 32 位大小的指针。然而,它也可以访问存储在计算机内存当前段之外的信息。尽管使用这种类型的指针,我们通常需要分配段寄存器来存储当前段中的数据地址。此外,我们还需要分配另一个寄存器来存储当前段内的偏移量。 语法 语法如下 以下语句为变量 s 声明了一个 far 指针 让我们看看一些有助于我们理解 Far 指针的其他重要要点。
示例 输出 4 Huge 指针与 far 指针一样,huge 指针的大小也是 32 位,但它甚至可以访问存储或位于段之外的位。然而,far 指针与 huge 指针非常相似,但它仍然比 far 指针具有一些优势。例如,Far 指针是固定的;因此,它们存储或位于的那个段的部分无法以任何方式更改或修改。然而,huge 指针并非如此,因为 huge 指针具有弹性,允许它这样做。 让我们看看一些有助于我们理解“Huge”指针的其他重要要点。
以下给出的示例显示了 huge 指针的用法。 示例 输出 4 4 1 在给定的程序中,p 是 huge 指针,*p 是 far 指针,而 **p 是 char 类型的数据变量。 Near、Far 和 Huge 指针之间有什么区别?一般来说,虚拟地址由选择器和偏移量组成。Near 指针没有显式的选择器,而 huge 指针有显式的选择器。当我们对 far 指针执行指针算术时,选择器不会被修改,但在 huge 指针的情况下可能会被修改。 注意:这些是非标准关键字,也是特定于实现的,并且在现代平台中已不再相关。下一个主题C语言中的魔术数字 |
割线法是一种有效的、强大的求解二次方程的数值方法。割线法以其精度和易用性而闻名,在定位二次方程的根方面尤其有效。在本文中,我们将介绍割线法的原理……
阅读 4 分钟
?在C编程中,当调用堆栈的大小超出其最大限制时,就会发生堆栈溢出。一个名为调用堆栈的内存部分存储有关局部变量和函数调用的信息。当调用一个函数时,计算机会在...
阅读 4 分钟
本节将讨论在 C 编程语言中将大写字母(字符或字符串)转换为小写的各种程序。大写字母是字母表中的大写字母。例如,大写字母是 A、B、C、D、…、X、Y、Z。类似地,...
阅读 4 分钟
到目前为止,C 程序操作是在一个未保存任何内容的位置或终端上执行的。但在软件行业,大多数应用程序都是为了存储它们获取的数据而创建的。将检索到的信息保存在文件中是一种...
14 分钟阅读
给定一个下限x和一个上限y,如果我们应该计算该范围内奇数和偶数的数量,我们可以选择使用for循环遍历从下限到上限的常规方法...
7 分钟阅读
程序员经常使用伪代码,这是一种比实际编程代码更易于阅读和理解的高级语言,来传达算法和程序逻辑。C 语言是一种高级通用编程语言,通常用于创建系统软件,并且是一种常见的实现...
阅读 3 分钟
C 语言中有许多数据类型,例如整数、浮点数、短整型、字符等。每种数据类型都有自己的字节大小和数字限制。例如,一个整数变量占用 4 个字节,而...
阅读 4 分钟
C 中的头文件 在 C 编程语言中,头文件是具有 .h 扩展名的源文件。这些文件包含函数原型或函数声明。其源代码包含常量、宏和系统范围的全局变量。如果我们要求定义...
7 分钟阅读
本主题将讨论 C 编程语言中的 isgraph() 函数。该程序用于检查一个字符是否为图形字符。图形字符是用于在屏幕上显示或打印字符的图形表示字符。它的意思是...
阅读 4 分钟
没有 main() 函数的 C 程序 我们可以不使用 main() 函数来编写 C 程序。为此,我们需要使用 #define 预处理器指令。让我们来看一个不使用 main() 函数打印 “hello” 的简单程序。示例 #include<stdio.h> #define start main void start() { ...
阅读1分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India