指针是首地址
#include "stdio.h"
#include "stdlib.h"
int main()
{
int *a;
a=malloc(3*4);
*a=0x33;
*(a+1)=0x34;
*(a+2)=0x35;
printf("a[0]=%x\n",a[0]);
printf("a[1]=%x\n",a[1]);
printf("a[2]=%x\n",a[2]);
printf("*a=%x\n",*a);
printf("*(a+1)=%x\n",*(a+1));
printf("*(a+2)=%x\n",*(a+2));
return 0;
}
运行结果:
指针容量是根据操作系统的位数决定的,16位的操作系统下指针容量是2个字节,32位则是4个字节,64位则是8个字节。指针容量与指针自增无关。
指针是首地址,且指针对应内存,不同指针类型对应的内存大小不同。
例如,
int型指针,对应内存为4个字节;“int *p; p++; ”意思就是下移一个指针地址,该地址对应的内存占用4个字节(4个内存单元)。
char型指针,对应内存为1个字节;“char *p; p++; ”意思则是下移一个指针地址,该地址对应的内存占用1个字节。