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。
总结图示
,