关于指针

mac2022-06-30  24

对于一个没有任何编程基础的我来说,指针这个概念一直是个头疼的问题,但问题总要解决,之前在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

最新回复(0)