对于一个没有任何编程基础的我来说,指针这个概念一直是个头疼的问题,但问题总要解决,之前在OC中使用都是死搬硬套,用起来也没底,不得不搞搞指针的含义了!
C语言里的指针,指针这个概念,还得提到指针变量,把指针变量类比为信封,信封上写着地址,对应内存的地址,通过这个地址可以访问内存,指针变量的创建过程一直是个疑惑.
最基本的创建方式
int a = 10;
int *p = NULL;(尤其这一步到底需要置空吗?)
*为取值符,&为取址符,以后就是这里开始的,
p = &a;这一步把存放a的地址符给了p变量,也就是p的内存里放的是a的地址
打印*p就是10,利用取值符从p中取出地址,再根据地址访问a的内存,等于*干了两件事,取和访,而且*只能取变量中存的地址,而&取的是这个变量本身内存地址
但是另一种方式就不理解了
int a = 10;
int *p = &a (这步不太理解,定义指针也不置空,直接赋值,不懂暂且只能当成简便方式吧,哈哈)
打印*p也是10;
但到了OC中
Student *stu = [Student alloc]init]; 这个初始化方法为学生类实例化出一个对象,将这个对象的地址交给了stu这个指针变量,疑惑的是为啥右边又不需用取址符(&)呐,OC是基于C的,这个方法的实现底层不知道真不爽,只能这么用了..
转载于:https://www.cnblogs.com/forever54780/p/4866531.html