易截截图软件、单文件、免安装、纯绿色、仅160KB

彻底搞定C指针-函数名与函数指针

函数名与函数指针
一 通常的函数调用
    一个通常的函数调用的例子:
//自行包含头文件
void MyFun(int x);    //此处的申明也可写成:void MyFun( int );
int main(int argc, char* argv[])
{
   MyFun(10);     //这里是调用MyFun(10);函数
      return 0;
}
void MyFun(int x)  //这里定义一个MyFun函数
{
   printf(“%d\n”,x);
}
    这个MyFun函数是一个无返回值的函数,它并不完成什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式:
MyFun(10);
    我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。
    直到——
    学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢?
    (不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。)
二 函数指针变量的申明
    就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。
    在C系列语言中,任何一个变量,总是要先申明,之后才能使用的。那么,函数指针变量也应该要先申明吧?那又是如何来申明呢?以上面的例子为例,我来申明一个可以指向MyFun函数的函数指针变量FunP。下面就是申明FunP变量的方法:
void (*FunP)(int) ;   //也可写成void (*FunP)(int x);
    你看,整个函数指针变量的申明格式如同函数MyFun的申明处一样,只不过——我们把MyFun改成(*FunP)而已,这样就有了一个能指向MyFun函数的指针FunP了。(当然,这个FunP指针变量也可以指向所有其它具有相同参数及返回值的函数了。)
三 通过函数指针变量调用函数
    有了FunP指针变量后,我们就可以对它赋值指向MyFun,然后通过FunP来调用MyFun函数了。看我如何通过FunP指针变量来调用MyFun函数的:
//自行包含头文件
void MyFun(int x);   &nb


相关文档:

C/C++语言编程修养1(转)

什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?
我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对
于速度快,只要编得多也就熟能生巧了。
 
我认为好的程序员应该有以下几方面的素质:
 
  1、有专研精神,勤学善问、举一反 ......

彻底理解C、C++、Win32与COM中的字符串

C/C++中的字符串问题在网上的讲解一向非常含糊,存在各个层次的库混用、滥用的情况,尤其是宽字符与窄字符等问题很难找到有效的资料,本篇随笔分享一下我长期收集到的一些比较准确的资料以及据此得到的个人理解.
C语言中的字符串
C语言中提供了两种字符类型char和wchar_t,C语言使用字符数组来表示字符串,同时支持两种直 ......

c/c++ static

C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
一、面向过程设计中的static
1、静态全局变量
在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: ......

【C\C++语言入门篇】 数组与指针

前面一篇我们介绍了指针,相信大家对指针不再是那么陌生,虽然在一些大胆的指针强制类型转换上有的读者还不习惯。但是至少大家心里有个数,指针式如此的灵活,以至于你可以操作得比较底层或者根本越过一些语法的限制。这可能也是众多程序员抨击CC++不安全的因素之一。安不安全不是本文想要表达的,这里只需要记住一点,如果 ......

GNU C __attribute__ 机制简介

GNU C __attribute__ 机制简介
2006-06-17 13:54:00
 标签:   [推送到技术圈]
摘要:
在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。
-------------------------------------- ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号