|
1、先把问题摆出来 参考Demo:1#include <stdio.h> 2#include <stdlib.h> 3 4/************************************ 5 * Fuction: 测试demo 6 * Author :(公众号:最后一个bug) 7 ***********************************/ 8int main(int argc, char *argv[]) { 9 int a = 10; 10 int *ptr = &a; 11 int **ptrptr = &ptr; 12 13 printf(" *ptr = %d\n",*ptr); 14 printf(" **ptrptr = %d\n",**ptrptr); 15 printf("**((int **)ptr) = %d\n",**((int **)ptr)); 16 printf("欢迎关注公众号:最后一个bug\n"); 17 return 0; 18} 运行结果:
现象描述:
2、二级指针的使用 1 多级指针 其实多级指针在嵌入式程序中的应用还是相对比较少的,超过3级的bug菌仅仅只在一个特殊的索引功能里面使用过。 这里重点看看一、二级,毕竟二级指针与我们的二维数据结合使用,二维素组在图形、矩阵、算法等等方面还是使用非常广泛的。2 一级指针 指针其实广义的讲它也是一种数据类型,所以所谓的int* ptr;其中int* 就是变量ptr的类型,那么ptr就是我们常说的指针变量。Demo:1#include <stdio.h> 2#include <stdlib.h> 3/************************************ 4 * Fuction: 测试demo 5 * Author :(公众号:最后一个bug) 6 ***********************************/ 7int main(int argc, char *argv[]) { 8 int a = 10; 9 int *ptr = &a; 10 11 printf(" a = %d\n",a); 12 printf("&ptr = 0x%X\n",&ptr); 13 printf("&a = 0x%X\n",&a); 14 printf("ptr = 0x%X\n",ptr); 15 printf("*ptr = %d\n",*ptr); 16 17 printf("欢迎关注公众号:最后一个bug\n"); 18 return 0; 19} 运行结果:
图解:
分析一下:
3 二级指针 如果大家已经理解了一级指针,二级指针也就顺理成章了,来看看下面的小程序:Demo:1#include <stdio.h> 2#include <stdlib.h> 3/************************************ 4 * Fuction: 测试demo 5 * Author :(公众号:最后一个bug) 6 ***********************************/ 7int main(int argc, char *argv[]) { 8 int a = 10; 9 int *ptr = &a; 10 int **ptrptr = &ptr; 11 12 printf(" a = %d\n",a); 13 14 printf("&ptrptr = 0x%X\n",&ptrptr); 15 16 printf("ptrptr = 0x%X\n",ptrptr); 17 printf("&*ptrptr= 0x%X\n",&*ptrptr); 18 printf("&ptr = 0x%X\n",&ptr); 19 20 printf("*ptrptr = 0x%X\n",*ptrptr); 21 printf("ptr = 0x%X\n",ptr); 22 23 printf("*ptr = %d\n",*ptr); 24 printf("**ptrptr= %d\n",**ptrptr); 25 26 printf("欢迎关注公众号:最后一个bug\n"); 27 return 0; 28} 运行结果:
图解:
分析一下:
3、是时候解答前面的问题了 参考Demo:1#include <stdio.h> 2#include <stdlib.h> 3 4/************************************ 5 * Fuction: 测试demo 6 * Author :(公众号:最后一个bug) 7 ***********************************/ 8int main(int argc, char *argv[]) { 9 int a = 10; 10 int *ptr = &a; 11 int **ptrptr = &ptr; 12 13 printf(" *ptr = %d\n",*ptr); 14 printf(" **ptrptr = %d\n",**ptrptr); 15 printf("**((int **)ptr) = %d\n",**((int **)ptr)); 16 printf("欢迎关注公众号:最后一个bug\n"); 17 return 0; 18} 分析一下:
4、最后小结 指针的理解就为大家讲解到这里了,如果你对指针还有畏惧感,那就只有一个可能,使用得太少了,多加练习自然生巧! |
微信公众号
手机版