- int main(int argc, const char * argv[])
- {
- /*
- int a[5] = {1, 2, 3, 4, 5};
- printf("%lu\n", sizeof(&a)); // a是指针常量,&a 取指向int *类型的指针的地址 即指向指针的指针
- // 无论指针指向什么类型的地址,指针占8字节
-
- printf(" &a地址:%#x\n &a+1地址:%#x\n", &a, &a + 1);
- // &a 和 (&a + 1) 内存地址相差 20 5 * sizeof(int)
- int *p = (int *)(&a + 1); // 将指向指针的指针强制转化为指向int类型变量的指针
-
- printf("%i %i \n", *(a + 1), *(p + 1));
-
- return 0;
- */
- int a[5] = {1, 2, 3, 4, 5};
- int *p = a + 1; // p指针变量,指向a[1]
-
- printf("a[1] = %i\np[1] = %i\n", a[1], p[1]);
-
- return 0;
-
- /*
- a[1] = 2
- p[1] = 3
- */
- }
复制代码
|