
word
LZ问题中对应的函数原型应该是 ??? count_
words(void*);,这里???是函数的返回值类型,count_
words前面的*是???的一部分。 这里参数类型是void*,表示可指向任意类型的指针类型。可以传入一个任何一个指针,它会隐式转换为void*类型,而不需要手动显式进行类型转换。代价是,按照ISO/ANSI C标准规定,void*指向的类型不确定,因此无法对它解引用,像void* p;之后试图引用*p得到p指向的对象是非法的;。不过GCC等编译器可能会有非标准扩展,会在这种情况下把void*当作char*处理。 2010-6-18 21:34 ---- 函数原型作为函数的声明,提示编译器某个函数具有的类型,以便之后链接器进行链接生成最终目标文件(例如.exe、.dll),而不至于在编译时产生未定义标识符的错误使编译终止。这里的原型表示约定标识符count_
words在之后表示一个函数,函数的类型(注意,国内的教材中往往和返回值类型混淆)是void*(void *),这个类型中的其中前一个void*表示返回值类型,括号里的类型表示参数列表有且仅有一个类型为void*的参数。至于函数本身的意义和返回值的意义要看函数定义或额外的说明文档才能清楚,不过从标识符命名来看应该是输入一个不确定类型的指针,进行某种计数工作,之后返回指针(值的意义看不出来,一般可以是原指针或者末尾指针)。 ==== [原创回答团]