ascii码对照表 C语言指针可以相减吗?为什么?

C语言指针可以相减吗?为什么?如果两个指针指向同一个数组,可以将它们相减,结果是两个指针之间的元素数。让我们以本章开头介绍的街道地址的类比为例。假设我住在第五大道118号,我的邻居住在第五大道124号

C语言指针可以相减吗?为什么?

如果两个指针指向同一个数组,可以将它们相减,结果是两个指针之间的元素数。让我们以本章开头介绍的街道地址的类比为例。假设我住在第五大道118号,我的邻居住在第五大道124号。每间房子的地址间距是2(我这边的街道地址是连续的偶数)。那么我邻居的房子就是我房子前面的(124-118)/2(或3)房子(我邻居的房子和我的房子分开两个房子,即120和122)。指针之间的减法与上述方法相同。

学习c语言的时候指针应该怎么理解?

简而言之,指针是表示地址的无符号整数。

所以仅仅理解指针是不够的。您还需要知道指针指向的数据空间是如何排列的。这可能涉及到一些与特定CPU/OS相关的知识。如果我们能用计算机体系结构的知识来理解它,它会更深刻、更准确。

例如:

如何存储float/double/long double?

如何在数据空间中组织阵列?

字符串是如何存储的?

如何存储结构和联合体?

位域组织

具体CPU相关部分如下:

整数的存储将涉及CPU大小的指定

浮点数的存储直接关系到FPU的设计

此外,还有一些扩展知识,涉及内存的分配和释放:如何在程序中分配内存?(malloc/free)

什么是堆和堆栈?

总而言之:指针是地址和整数。但要充分利用它,我们需要了解计算机存储空间的分配。困难在这里,突破在这里。

对于类型相同的两个指针变量之间,不能进行的运算是符号是?

您应该选择C。可以比较选项a中相同类型的两个指针的大小。比较原则应基于实际内存的高位和低位。B选项分配,当然可以。D选项可以通过减去两个相同的指针变量(应用于特定类型的数组)来获得相同类型的元素数。不允许使用C选项,因为两个指针不添加任何内容,所以不允许添加。