1)首先,关于C语言指针的复习,首先得知道C语言的每种类型,在内存中大小是怎么样的,如果忘记的话,可以利用sizeof函数进行查看大小即可。
2)其次,定义一个指针,用*号去定义,它与后边的*p不一样,后边是直接取地址里对应的值出来。
3)然后,关于指针变量的类型,分为两种,一种是自身的类型,一种是指向的类型,指向的类型决定了所取空间内容的长度,就是可以取多少字节的空间,以及一次偏移的大小是多大的。
#include <stdio.h>
void test01()
{
//基本类型double float long int short char
//分别占用8字节、4字节、4字节、 4字节、2字节、1字节
char ch;
printf("sizeof(ch) = %d\n",sizeof(ch));
short k;
printf("sizeof(k) = %d\n",sizeof(k));
int num;
printf("sizeof(num) = %d\n",sizeof(num));
long l;
printf("sizeof(l) = %d\n",sizeof(l));
float m;
printf("sizeof(m) = %d\n",sizeof(m));
double b;
printf("sizeof(b) = %d\n",sizeof(b));
}
void test02()
{
int num = 10;
printf("%p\n",&num);
//取地址用&
//&num代表变量num的起始地址
int *p =NULL;
printf("sizeof(p) = %d\n",sizeof(p));
//定义一个指针变量,来保存num的地址
//在定义的时候:*号说明p是指针变量
p=#
//num的地址与p建立关系
printf("num = %d\n",num);
printf("*p = %d\n",*p);
//使用*p 表示取保存的地址编号 对应空间的内容
}
void test03()
{
int num = 100;
int *p = #
//指针变量两种类型:自身的类型 指向的类型
//自身的类型:将变量去掉即可
//p自身的变量就是 int *
//指向的类型:在指针变量定义的时候将 变量名和离它最近的一个*一起去掉即可
//p指向的类型是 int
//指针变量指向的类型的作用:决定了指针变量 所取空间内容的宽度(指针变量的跨度)
printf("&num = %u\n",&num);
//打印num地址3212921248
printf("p = %u\n", p);
//打印p地址3212921248
printf("p+1 = %u\n", p+1);
//打印地址p+1 = 3212921252
//由上面可以知道,指针变量指向的类型为int,所以一次偏移4字节
char *q = #
printf("&num = %u\n",&num);
//打印num地址3215036956
printf("q = %u\n", q);
//打印p地址3215036956
printf("q+1 = %u\n", q+1);
//打印地址p+1 = 3215036957
//由上面可以知道,指针变量指向的类型为char,所以一次偏移1字节
printf("*q = %d\n",*q);
//结果为100
}
void test04()
{
int num = 0x01020304;
int *p = #
printf("*p = %#x\n",*p);
//*p = 0x1020304
char *q = #
q+=1;
//一次偏移一个字节
printf("*q = %#x\n",*q);
//*q = 0x03
short *k = #
k+=1;
//一次偏移两个字节
printf("*k = %#x\n",*k);
//*q = 0x0102
}
int main()
{
// test01();
// test02();
// test03();
test04();
return 0;
}