指针变量的使用步骤:
#定义指针变量
##给指针变量赋地址(向操作系统申请空间)
char *fp;
fp = (char *)malloc(sizeof(char) * 10);
if(NULL = fp)
{
printf("Malloc failure!");
}
free(fp); //释放空间
int a[5] = {1, 2, 3, 4, 5};
int *p1 = (int*)(&a + 1);
int *p2 = (int*)((int)a + 1);
int *p3 = (int*)(a + 1);
p1[0], p2[0], p3[0]的值分别为多少?
int a[5] = {1, 2, 3, 4, 5};
int *p1 = (int*)(&a + 1);
int *p2 = (int*)((int)a + 1);
int *p3 = (int*)(a + 1);
p1[0], p2[0], p3[0]的值分别为多少?
#p1 中,&a 表示取数组的地址,&a + 1 加20个字节 超过了这个数组的范围,所以输出的结果是一个随机值
#p1中,a 是数组名,本身是一个地址,是第一个元素的地址,int 将 a 转换成一个随机的整型数,int * 将 a + 1 强制转换成指针,输出的如果也是一个随机的垃圾值
#p3中,a 是第一个元素的地址,单位是 4 字节,a + 1 是 数组第二个值的地址,int * 将它转换成了 一个整型的指针
p3[0]=====*(p3 + 0) 指针p3 指向的是第二个元素的地址,所以输出的是第二个元素 2