c语言 对于类型相同的两个指针变量之间,不能进行的运算是符号是?
对于类型相同的两个指针变量之间,不能进行的运算是符号是?
您应该选择C。可以比较选项a中相同类型的两个指针的大小。比较原则应基于实际内存的高位和低位。B选项分配,当然可以。D选项可以通过减去两个相同的指针变量(应用于特定类型的数组)来获得相同类型的元素数。不允许使用C选项,因为两个指针不添加任何内容,所以不允许添加。
C语言指针可以相加吗?为什么?
指针变量有加减运算,但要注意以下几点:
1。指针变量存储地址值,即数字地址。例如,指针变量的值是0x20000000,这意味着指针变量将位于0x20000000的内存地址存储在内存中。指针变量可以加减,但只能用整数数据加减。此时,加法或减法的含义不是对其地址值的加法或减法。换句话说,如果指针变量p的值是0x20000000,那么p=p 2的值不是0x20000002,它不是地址值的简单相加,因此地址值的加减多少与指针指向的数据类型有关。如果在32位操作系统上,P是指向整数数据的指针变量,那么在P=p2之后,P的地址值变成0x2000008,也就是说,地址值实际加了多少:sizeof(int)*2。为了说明白点,我们添加和减去的数字是由指针指向的数据类型度量的。p2表示P在内存中向前移动两个int的距离。如果P不是int类型,而是其他类型,则相同。整数数据的指针减法也是如此。
2. 指针可以减,但不能加:可以减去两个相同类型的指针变量。它们的含义表示两个指针指向的内存位置之间分隔了多少个元素(请注意,它是一个元素,而不是字节数)。例如,对于int类型的指针P和P1,P1-P的含义表示它们之间分隔了多少int类型的元素。其他类型的指针变量也是如此。指针变量的自加和自减实际上是整数1的加和减。
3. 大小可以在指针之间进行比较。但是,它也仅限于同一类型的两个指针变量,比较不同类型指针变量的大小是没有意义的。指针之间大小比较的含义表示它们在内存中指向的位置之间的高低关系。
请问两个指针变量能比较大小吗?谢谢?
对象指针的值是映射到线性地址空间的整数值。C/C允许比较同一类型的两个对象指针,包括==,!=,<,>,<=,>=。所以LZ问题的答案是肯定的。对于不同类型的对象指针,可以比较转换。由于C语言的静态类型检查比C语言更为严格,同一代码在C语言编译器中可能会产生编译错误,而C语言编译器只会由于缺少隐式转换而发出警告。C的成员指针通常是用offset实现的,但它不一定代表特定的地址或偏移量(它可以看作是成员的不可见结构,与编译器及其所指向的类型有关)。即使在同一个编译器中,不同成员指针类型的sizeof结果也不是唯一的。在这种情况下,即使按值转换也无法实现,自然也无法比较)数字是没有意义的。无法比较不同类型的成员指针。除了operator==和operator之外,不能比较完全相同类型的成员指针!=. ----Zhsh955错误。指针是内存地址,↑错误,例如,可能表示寄存器地址空间。说白了,这是一个32位整数,↑错误。例如,在16位平台上,指针的值是16位无符号整数;在64位平台上,指针的值是64位无符号整数。另外,C/C中常见的错误是指针有类型,地址是整数,没有类型(实际上,地址根本不是语言本身的概念)。指针可以是一个对象,而地址本身就是一个正确的值。===[原始响应组]
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。