关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相同类型的指针可以相减,不可以相加。
时间: 2023-11-04 19:29:07 浏览: 174
你说的大部分是正确的,但是有一个小错误。
在C语言中,指针的运算只有加减运算,没有乘除运算。指针可以加上或减去一个整型常量,这个整型常量表示偏移量,用来指向指针所指向类型的后面或前面的元素。例如:
```
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr; // p指向arr的第一个元素
p = p + 1; // p指向arr的第二个元素
```
在上面的例子中,我们用指针p来指向数组arr的第一个元素,然后通过`p = p + 1`让指针p指向数组arr的第二个元素。
指针还可以进行相减运算,相减的两个指针必须指向同一数组中的元素或者指向同一块内存区域中的元素。相减的结果是两个指针之间相差的元素个数,这个结果是一个整数。例如:
```
int arr[5] = {1, 2, 3, 4, 5};
int *p1 = &arr[2]; // p1指向arr的第三个元素
int *p2 = &arr[4]; // p2指向arr的最后一个元素
int n = p2 - p1; // n为2,p2和p1之间相差两个元素
```
需要指出的是,相同类型的指针可以相减,但不可以相加。因为相减的结果是一个整数,而两个指针相加的结果是一个不确定的地址,这个地址没有意义,也没有实际的用途。
相关问题
关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;相
邻两个指针可以做减法运算,得到它们之间的距离(单位为指针指向类型的大小)。这是因为指针存储的是内存地址,而加减常数就是对地址进行偏移,而乘除没有意义。需要注意的是,对指针进行加减操作时需要满足指针指向的内存单元是可访问的,否则可能会导致程序错误。此外,指针的值也可以与整数进行比较(例如大于、小于等),但需要注意指针和整数的类型应该一致。
关于C语言指针的运算:指针只有加减操作,没有乘除操作。指针可以加常数、减常数;两个指针可以相减,其结果是两个地址值之差; 两个指针不可以相加。
对的,指针只有加减运算,没有乘除运算。指针可以加上一个整数常量或减去一个整数常量,这个整数常量会被乘以指针所指向的数据类型的大小,然后再与指针当前的值相加或相减。这样做的目的是为了让指针指向一个新的地址。
两个指针可以相减,其结果是它们之间相差的元素个数,也就是两个指针所指向的地址之差,再除以它们所指向的数据类型的大小。这个操作可以用来计算两个指针之间相隔的元素个数。
但是两个指针不能相加,因为指针加上一个整数常量后,指针的值会向高地址移动,但是两个指针相加的含义是什么并不清楚。因此,两个指针不能相加。
阅读全文