关于 C 语言指针个人理解的小笔记 作者: Chuwen 时间: 2020-12-15 分类: C/C++ 评论 # 序言 就在去年(2019年10月),为了学习 Android 开发,我去学了 Java(虽然学的不怎么样),这种强类型语言应该是我认认真真学过的**第二个强类型语言**,第一个是 C 语言,大一的时候学习过基本语法知识等,但在**指针**的学习过程中,我学的云里雾里,没想清楚为什么需要怎么做。 到现在,能写出一些些小小功能的 Android 软件,常规的布局、基本控件的交互使用、一些框架的使用(比如 MPAndroidChart、Gson)。 我在其中也学习到许多新的知识以及对以前所学习的**指针**有了一定的了解,当然还有其它的收获,我可能会在 **2020 年度总结** 专门写。 # C 语言指针 > 因为最近我再学习一些算法,使用到 C 语言指针,但是大致懂什么意思,就是有时候会忘记,所以再次写一下,以便巩固 ```c #include "stdio.h" int main(){ int var1;//定义产常规变量 int *point;//定义指针变量 int *point2;//定义指针变量 var1 = 20170101;//变量赋值 printf("打印变量的值 var = %d \n", var1); //在变量名前面加一个 & 表示该指针的地址 printf("打印变量存储地址 var = %p \n\n", &var1); /***********************************************************/ //指针赋值,将 var1 的指针地址,赋值给 point 指针变量 point = &var1; printf("point 指针地址 %p \n", point); //指针变量取值 printf("point 指针变量的值为 %d \n\n", *point); //指针变量 赋值给 指针变量 point2 = point; printf("point2 指针地址 %p \n", point2); //修改指针值,因为 point、point2 指针地址都指向了变量 var1 的指针地址 //那么当 point、ponit2 指针变量对其值进行修改,那么所有指向该指针地址的“指针变量” //它的值都会变成我们修改的 100 *point2 = 100; printf("var1 的值 %d\n", var1); printf("point 的值 %d\n", *point); printf("point2 的值 %d\n\n", *point2); var1 = 200; printf("var1 的值 %d\n", var1); printf("point 的值 %d\n", *point); printf("point2 的值 %d\n\n", *point2); return 0; } ``` # 总结 - 获取 常规变量 指针地址,在变量名前加 `&` 获取 - 获取 指针变量 的值,在指针变量名前加 `*` 获取 - 当指针地址的值改变了,那么所有指向该**指针地址**的值,都将改变