返回第五十二章 指针(七)(2 / 2)程序媛养成计划首页

{

/*敬礼*/

sayHello();

}

这样,当中国人进入小区的时候,咱们就把chineseSayHello这个函数作为参数传递给sayHello,到时候保安叔叔们就会说欢迎回家』,而如果是外国人,就把othersSayHello作为参数传递给sayHello,这样保安叔叔们就会说welee go back home』。

其实我们之前在写推箱子这个游戏时,讲到的响应事件,追根究底其实就是使用的回调函数机制。

通过上面的案例,我们可以总结出一点,当我们需要在一个函数中执行某些操作,但是这些操作的具体内容在实现函数的时候不能确定,那么这个时候我们就可以考虑使用回调函数了。

当然了,就这么三言两语就想让你们理解回调机制无疑是太想当然了,等到你们在实际开发过程中会接触到的。」

看着我和小弦子脸上毫不掩饰的茫然,老爹不置可否地耸了耸肩。

「现在指针的内容就剩下最后一点点了——多重指针和指针数组。这两个知识点用到的时候比较少,咱们点到为止即可。

我们先说指针数组,既然指针是一种数据类型,那么它有数组也不是什么怪事,那你们说说,指针数组是个嘛玩意?」

「一个口袋,里面装的全部都是指针!」

我和小弦子异口同声道。

「冰狗,回答正确!那么再请你们大胆的猜想一下,如何定义一个指针数组。」

闻言后,我先总结了一下普通数据类型声明数组的方式,然后依葫芦画瓢写出了自己的答案,没想到居然还被我蒙对了。

「其实指针数组从你们写下第一行代码的时候就见到了哦!而且在这之后,你们每次写代码的时候指针数组都默默地陪伴在你们身边。它认识你们,你们却不认识它。」

这个时候,老爹突然神秘地笑了笑。

「写下第一行代码的时候就见到了指针数组这么高深的知识?不可能啊,写的第一段代码分明是一个输出hello world』的程序嘛。

等等,老爹后面这句话分明是别有所指嘛。」

我在心里暗自揣摩了一下老爹的话,最终推断出只有main函数才满足老爹的这个说法。

因为main函数从我们开始写第一段代码到之后的每次写代码都会用到它,那么指针数组出现的位置就呼之欲出了,只能是main函数的参数!

关于main函数,一开始老爹也没有给我解释太多,只是说这是程序的入口地址,所有程序都是从main函数开始执行的,让我给硬背下来。

main函数的第一个参数是argc,int类型的变量,第二个参数是argv,指数组参数就只能是它了。

「看来你们已经猜到了,那我们今天就顺带来揭开main函数什么的面纱,现在我们写一段代码来运行一下:

int main(int argc, char const *argv[])

{

or (int i = 0; i < argc; i++)

{

print(“argv[%d]=%s

“, i, argv[i]);

}

getchar();

return 0;

}

在小黑屏里面运行可执行文件的时候,咱们在后面加点东西,程序编译出来的可执行文件名字叫point.exe,那小黑屏就执行这个:

pointer.exe hello world Java」

按照老爹说法,在小黑屏里面输出了:

argv[0]= pointer.exe

argv[1]= hello

argv[2]= world

argv[3]= Java

原来argv是一个字符指针数组,而字符指针就是一个字符串,所以argv是一个字符串数组,而argc是这个数组的长度!并且字符串数组的元素来自于我们运行程序时携带的参数!

哈哈,没想到学到这里,居然才把main函数给弄清楚。难怪当初老爹不给我多讲main函数,因为讲我的确也难以理解,说不定还会因此畏难而放弃学习。