C中可以使用 运算符将指针与整数相加。整数与指针所指向类型(字节为单位)的大小相乘,再将结果与初始地址相加

例如:

int arr[5];//声明整型数组

int *ptr1;//声明整型指针

ptr1 = arr;//将arr数组首地址赋值给ptr1

ptr1 3;//相当于将3*4(int类型4个字节)=12,再将12与ptr1指向地址相加。具体看以下示例:

#include<stdio.h> int main(void){ int arr[5] = {100, 200, 300, 400, 500}; int *ptr1; ptr1 = &arr[0]; printf("ptr1 = %p\n", ptr1); printf("ptr1 3 = %p\n", ptr1 3); printf(" &arr[3] = %p\n", &arr[3]); return 0; }

该例中:

ptr1是数组arr的首地址

ptr1 3获取的是arr数组第4个元素的地址

&arr[3]是arr数组第4个元素的地址

看看输出结果

ptr1 = 0000008ebc1ffc60

ptr1 3 = 0000008ebc1ffc6c

&arr[3] = 0000008ebc1ffc6c

ptr1 的值是0000008ebc1ffc60,ptr1 3的值是0000008ebc1ffc6c,指针采用的是十六进制表示,十六进制0与十六进制c相差12,ptr1 3中需要将整数3乘以4(int类型占4个字节),结果为12。

总结图示

指针的基本运算(指针基本操作总结-指针与整数相加)(1)

,