1. 说明
//数组占用一个块连续的内存
//指针变量在做 p+1 +2 这样的位移运算 每 +1 之后移动几个字节,取决于指针变量的类型
//int *p p+1 之后移动 4个字节 char *p p+1 之后移动1个字节
2. 代码实现
//指针和数组的关系
void pointersAndArrays() {
//声明一个 char 数组
// char arr[] = {'a','b','c','b','\0'};
int arr[] = {10, 20, 30, 40, 50};
__android_log_print(ANDROID_LOG_INFO, TAG, "arr[0] 的地址是 %#x", &arr[0]);
__android_log_print(ANDROID_LOG_INFO, TAG, "arr[1] 的地址是 %#x", &arr[1]);
__android_log_print(ANDROID_LOG_INFO, TAG, "arr[2] 的地址是 %#x", &arr[2]);
__android_log_print(ANDROID_LOG_INFO, TAG, "arr[3] 的地址是 %#x", &arr[3]);
__android_log_print(ANDROID_LOG_INFO, TAG, "数组 arr 的地址是 %#x", &arr);
//char * p = &arr[0];
//p = &arr[2];
//__android_log_print(ANDROID_LOG_INFO,TAG,"*(p+0) = %c",*(p+0));
//__android_log_print(ANDROID_LOG_INFO,TAG,"*(p+1) = %c",*(p+1));
//__android_log_print(ANDROID_LOG_INFO,TAG,"*(p+2) = %c",*(p+2));
//__android_log_print(ANDROID_LOG_INFO,TAG,"*(p+3) = %c",*(p+3));
int *p = &arr[0];
//打印对应的地址
__android_log_print(ANDROID_LOG_INFO, TAG, "p+0 = %#x", p + 0);
__android_log_print(ANDROID_LOG_INFO, TAG, "p+1 = %#x", p + 1);
__android_log_print(ANDROID_LOG_INFO, TAG, "p+2 = %#x", p + 2);
__android_log_print(ANDROID_LOG_INFO, TAG, "p+3 = %#x", p + 3);
//打印指针指向的地址的常量值
__android_log_print(ANDROID_LOG_INFO, TAG, "*(p+0) = %d", *(p + 0));
__android_log_print(ANDROID_LOG_INFO, TAG, "*(p+1) = %d", *(p + 1));
__android_log_print(ANDROID_LOG_INFO, TAG, "*(p+2) = %d", *(p + 2));
__android_log_print(ANDROID_LOG_INFO, TAG, "*(p+3) = %d", *(p + 3));
}