HELLO,今天我分享的是指针。
我们先来看看指针定义怎么写:
它和变量很像,只是在前面加了一个“*”。
但是注意啦!!!我这种定义方式是错的!
如果像我这样写,会导致程序莫名崩溃!
因为如果初始时并不定义,会导致指针成为野指针!那野指针(wild pointer)是什么呢?
野指针是指未定义的指针,会乱指一气!
那如果指针一开始未定义,可是你又不知道定义谁的地址怎么办?
只需像下面这样即可:
NULL是什么?它能让指针指向空,自然不会崩溃。
怎样才能输出地址呢?请看下面的代码(printf用%p)
那为了证明NULL可以指向空,来看执行结果:
那怎样指向a的地址呢?请看代码(&是取地址符):
这里的意思是什么呢?
这里指针p指向了a的地址,输出结果就是a的地址
那指针有何用处?
指针用处是:可以通过地址去操控一个变量.
其实指针在使用时不需要加“*”!
我们来看一道NOIP2022普及组的真题:
你会选什么呢?
把你的第一想法告诉我吧(下面有讲解)!
正确答案为:D!你选对了吗?那为什么选D?首先我们可以排除B,A,因为一眼就可以看出他俩不对,我们来看C,q指向的地址为y,而复值代码是将q的值赋给p,排除法可知,选D。
指针的考法很多,那我们再看一题(NOIP2017普及组)吧:
在链式栈中,就在单链表的表头插入一个节点:s->next=hs(排除A),将新节点赋予栈顶指针:hs=s
(
链表如果有头节点就选C
链表如果没头节点就选B
但只能默认没头节点QaQ,之前就在这里纠结了好久啊啊啊😫
)
好啦!指针就讲完啦!我们下期见!