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



