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。
總結圖示
,