大家晚上好呀,今天要给大家带来的是关于指针的基础知识点。
首先,我们都知道如何一个整型的变量,并赋值给它。如:int i=5;
但它在电脑中具体的运行是怎么样的呢?其实啊,首先在电脑内开辟一个关于in的空间,(4个字节)每个字节都是一个空间,每个空间都有自己的门牌号,然后再把5放进去。这种就是直接访问法,并且我们今天要讲的指针也是类似这样的操作,但指针其实是间接访问法。
定义指针的具体形式:变量类型+*+变量名。如int *p;它的意思就是定义一个变量p,p是一个指针,指向整型的地址,然后int定义的变量类型就决定了要取多大的空间来读取数据。说白了指针其实就是一个地址,相当于一个房间的门牌号。
我们定义的指针有两种形式,第一种其实可以这样,
int*p=&a;像这样
取i的地址给指针p,指针只能指向数据的首地址,即变量i的储存空间的第一个门牌号,然后用4个字节来接受i,所以这就暗示了我们,指针两边的数据类型要一致,
所以这样就都不对啦
然后还有一种定义的办法,就是,直接intp;没有对指针p进行取地址,这种指针叫做野指针。但这样的指针是很危险的,因为如果没有取地址,那电脑就会自动取地址的,这时候万一取到了一些电脑核心代码的地址然后进行改写,系统就会有崩溃的风险。所以我们可以赋值0给指针p,我们指针中的零是NULL;intp=NULL;这样就可以避免啦
然后就是需要辨别一下,如果一个程序里出现了两个*p,这两个的含义是不同的。
第一次的*p出现在开头的定义,这时候就是定义了一个指针,像我上面那个,
第二次的*p 就是取值的意思;
所以我们记住,变量p就是只能取地址,*p才能取值。
最后其实还有一个万能指针,void *p=NULL; 也就是说我一开始定义这个指针还不知道它要用来取哪种类型的变量,然后我们要用的时候就进行强行转换就好啦,但是万能指针不经常用,举个例子只看我画的就好啦
好啦,今天的分享就到这里啦,我们明天见!