这个差异是因为在c语言标准中,加法与减法运算对于地址的操作和对于值的操作是不同的。 当一个加法运算,加号两边的操作数一个是指针,另一个是一个整数时,这个整数值先乘以指针指向的数据类型的大小(如sizeof(int)),然后再和指针的值相加。 当一个减法运算,减号左边的操作数是一个指针,右边的操作数是一个整数时...
目的:指针也就是地址的运算:只能参与减法运算。*/ # include <stdio.h> int main(void){ int a ...
从运算结果可以看出:pa、pb、pc 每次加 1,它们的地址分别增加 4、8、1,正好是 int、double、char 类型的长度;减 2 时,地址分别减少 8、16、2,正好是 int、double、char 类型长度的 2 倍。 这很奇怪,指针变量加减运算的结果跟数据类型的长度有关,而不是简单地加 1 或减 1,这是为什么呢? 以a 和 pa ...
C语言中的指针减法(Pointer Subtraction) 与指针加法类似,我们可以从指针变量中减去一个值。从指针中减去任意数字将得到一个地址。指针减法的公式如下: 新地址 = 当前地址 - (数字 * 数据类型的大小) 32位系统 对于32位整数变量,将减去2 * 数字。 64位系统 对于6...
指针减法:将指针的地址值减少若干个单位,单位大小同样由指针所指向的数据类型决定。 注意事项:在进行指针加减整数操作时,需要确保指针指向的内存范围内有足够的空间,避免指针越界。 假设有一个整型数组int arr[5] = {10, 20, 30, 40, 50};,我们定义一个指向该数组的指针int *ptr = arr;。
& 地址运算符 Sizeof 长度运算符 13 * 乘法运算符 双目 自左向右 / 除法运算符 % 求余运算符 12 + 加法运算符 - 减法运算符 11 << 左移运算符 >> 右移运算符 10 <、<=、>、>= 关系运算符 9 == 等于运算符 != 不等于运算符 8 & 按位与运算符 7 ^ 按位异或运算符 6 | 按位或运算符 ...
指针的算术运算是根据指针指向的数据类型的大小来进行的。当我们对指针进行加法或减法运算时,实际上是将指针向前或向后移动了若干个该数据类型的单位大小。 指针加减的运算规则 对于类型为T的指针p,p + i(i为整数)会得到一个新的地址,该地址相比p是向后偏移了i * sizeof(T)个字节。类似的,p - i会得到一...
1)sizeof:长度运算符2)& :取地址运算符3)[]:下标运算符4)* :指针运算符5). :结构体成员运算符6)->:指向结构体成员运算符这里介绍一下sizeof长度运算符,其余的在后面会讲到。sizeof运算符返回一个数据类型、变量、常量所占的字节长度,可以使用printf()函数来输出。 【实例6.6】sizeof长度运算符#...
2)& :取地址运算符 3)[]:下标运算符 4)* :指针运算符 5). :结构体成员运算符 6)->:指向结构体成员运算符 这里介绍一下sizeof长度运算符,其余的在后面会讲到。sizeof运算符返回一个数据类型、变量、常量所占的字节长度,可以使用printf()函数来输出。 【实例6.6】sizeof长度运算符 #include <stdio.h> ...