「那就永远停留在菜鸟级别!有很多人哪怕在参加工作了以后,都没有将指针的用法融汇贯通。所以啊,你们要打起精神来,好好听这部分的内容。
好了,内容正式开始!」
闻言后,我和小弦子都挺直了腰杆,毕竟这还是老爹第一次如此郑重其事地强调。
「假设你们俩在学校闯祸了,老师通知我到学校来,但是因为老爹不知道你们的教室在哪儿,于是我就问了你们学校的老师,被告知你们在五楼。
于是老爹来到五楼,通过教室门口的『四年级二班』标识牌找到了你们教室。但是不巧的是,你们俩已经被班主任叫到了办公室。正在上课的任课老师担心我找不到,告诉我办公室在502。
最终我通过502找到了办公室,看到了正在接收批评教育的你们。
在这个案例中,我们要找到教室或者办公室只需要知道标识牌或者编号中的一个,就能够找到那个房间,这个没有错吧?」
「嗯……」
「其实啊,在C语言中,一个房间就相当于我们内存的一个字节,如果我们要对内存的某个字节进行访问,同样也可以如同案例中的方式,要么通过标识牌,要么通过编号。
而内存字节的标识牌就是我们的变量名,编号,自然就是我们的内存地址了。
在C语言中,我们把一个变量的地址成为该变量的指针,换而言之,指针代表的就是一个地址,这个地址指向内存中的某个变量。」
「指针原来就是地址啊,也没有什么奇特的呀,为什么老爹之前一提到指针就是一副讳莫如深的样子?」
听到老爹的讲述后,我并没有意识到指针有什么特别之处。
「指针的精妙,只能用只可意会不可言传几个字来形容,这个需要你们在实际使用到的时候才能体会到。看你们一副兴致缺缺的样子,那我现在就让你们开开眼界,让你们体会到指针强大之处。
请听题:请编写一个s函数,实现对两个变量的值进行交换。也就是说,我有两个变量:
int a = 3;
int b = 4;
在调用了s之后,a的值变成了4,b的值变成了3。」
「这个有什么难的嘛,这样写不就好了么:
void s(int x, int y)
{
a = a + b;
b = a - b;
a = a - b;
}
s(a,b);
不就完了么?」
我不以为意道。
「是么?真的是这样么?」
老爹脸上浮现出一抹意味深长的笑容,这让我心中一凸,因为上次看到这种笑容还是在学习break关键字时。
那时我无比膨胀地认为老爹所说的break结束离它最近的for指的代码距离上的远近,然而错的一塌糊涂!