不知不觉来基础班已经10多天了,c语言基础已经差不多上完了,一路过来感慨颇多,收获也很多.刚开始上到指针时也是听的懵懵懂懂的,半知半觉就上完了,被指来指去迷迷糊糊的,后来慢慢的对它有了进一步的加深.
1 首先指针就是地址,地址就是指针.意思是指指针就是指向变量的地址,从而达到操作变量的作用,定义的时候通过*符号指向变量的地址如int* p1 = *num, 从而达到操作num的作用.然而意思虽然简单,但实际却是很复杂的,涉及到指针数组,函数指针的传递,二级指针,等等,毕竟指针是c语言的灵魂.
2 关于赋值,一个指针被定义了之后,必须要为其赋值,不然会有很严重的后果,声明后果呢,就是不赋值的话,他就随机指向空间的地址,有可能指向已经定义好的变量,如果只是取其值出来用那还好,如果去更改他的值,那么那个不知的变量也会相应的改变,所以如果不想为其赋值,那就给其赋null,其是一个空值,相当于0.
3关于2级指针的理解,我是这么想的:如int num = 100;int *p1 = # int ** =p2;首先p1指向num的地址,p2指向p1的地址,那么p1的值应为num的地址,*P1则是p1里寸的地址进行取值,既num的地址,所以等于100,这里解释一下*的作用,它既是作为指针符号所指向变量的地址,也是对所指向的地址进行取值的符号;所以*p2是对p1进行取值,既结果是num的地址,然后**P2就是对num的地址进行取值,结果也是100.
4 关于指针数组,最有用的是用在传递地址,在函数中用处最大,当建立关系后,即使函数不用返回值,那也可以通过指针数组来达到返回数个值的作用,结构体类型指针亦是.
5其实主要掌握了指针的本质之后,那就不怕他了,无非就是地址的传递,平时如果迷惑的话可以动动手,画画他们的在内存中的具体活动,希望大家在黑马能得到自己所希望的成长,大家都能考上就业班,为中国的it业做出一份自己的贡献. |