#include <stdio.h>
//指针运算
int main(int argc, const char *argv[])
{
short a = 10;
short *p = &a;
printf("&a = %p\n", &a);//输出变量的的内存地址 &a = 0028FF46
printf("p = %p\n", p); //输出指针变量p p = 0028FF46
printf("p+1 = %p\n", p+1); //把指针变量向前1个单位 p+1 = 0028FF48
printf("p+2 = %p\n", p+2); //把指针 变量向前2个单位 p+2 = 0028FF4A
printf("p+3 = %p\n", p+3); //把指针 变量向前3个单位 p+3 = 0028FF4C
return 0;
}
#include <stdio.h>
// 一维数组和指针
int main(int argc, const char *argv[])
{
int a[5] = {0,1,2,3,4};
int *p = &a[1]; //获取数组第二个元素的 内存地址 赋给指针变量p
int i;
//[] * 为取值 ()&为取地址 数组变量和指针变量 不带括号则默认取地址
printf("a[2] = %d\n",a[2]); //输出数组的第三个元素 2
printf("*(a+2) = %d\n",*(a+2)); //把指针a向前移动两个单位 并且取值 ,数组变量a默认指向数组的第一个元素 2
printf("*(p+1) = %d\n",*(p+1));//把指针p向前移动一个单位 取值 2
printf("p[1] = %d\n",p[1]); //把指针p向前移动一个单位 2
printf("a[2] = %p\n",&a[2]);//用数组变量获取数组第三个元素的地址 0028FF28
printf("*(a+2) = %p\n",&*(a+2));//用数组变量获取数组第三个元素的地址 后取值再获取地址 0028FF28
printf("*(p+1) = %p\n",&*(p+1));//把指针变量向前移动一个单位 取值 再获取内存地址 0028FF28
printf("p[1] = %p\n",&p[1]); 把指针变量向前移动一个单位 取值 再获取内存地址 0028FF28
printf("a+2 = %p\n",a+2); // 0028FF28
printf("p+1 = %p\n",p+1); // 0028FF28
return 0;
}