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选项,因为两个指针不添加任何内容,所以不允许添加。