指针变量
存放内存的地址编号(32位平台,4字节)
指针变量的使用
通过p对所保存的地址空间 进行读写操作
指针变量的类型
按指针指向的数据的类型来分
1:字符指针
字符型数据的地址
char *p;//定义了一个字符指针变量,只能存放字符型数据的地址编号
char ch;
p= &ch;
2:短整型指针
3:整型指针
int *p;//定义了一个整型的指针变量p,只能存放整型变量的地址
int a;
p =&a;
注:多字节变量,占多个存储单元,每个存储单元都有地址编号,
c语言规定,存储单元编号最小的那个编号,是多字节变量的地址编号。
4:长整型指针
5:float 型的指针
6:double型的指针
7:函数指针
8、结构体指针
9、指针的指针
10、数组指针
指针变量取值宽度
void test01()
{
int num = 0x01020304;
int *p;
short *p2;
char *p3;
p = #
p2 = #
p3 = #
printf("*p = %#x\n", *p);//0x1020304
printf("*p2 = %#x\n", *p2);//0x304
printf("*p3 = %#x\n", *p3);//0x04
}
int main(int argc,char *argv[])
{
test01();
return 0;
}
指针变量的跨度
void test02()
{
int num = 0x01020304;
int *p;
short *p2;
char *p3;
p = #
p2 = #
p3 = #
printf("p=%u\n",p);
printf("p+1=%u\n",p+1);
printf("-----------------\n");
printf("p2=%u\n",p2);
printf("p2+1=%u\n",p2+1);
printf("-----------------\n");
printf("p3=%u\n",p3);
printf("p3+1=%u\n",p3+1);
}
结果分析
综合案例
void test03()
{
int num = 0x01020304;
char *p;
short *p2;
p = #
p2=#
printf("%#x\n", *(short *)(p+1));//0x203
printf("%#x\n", *(short *)((char *)p+1));//0x203
return;
}