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

C/C++中函数指针的含义

转至http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/566020.html
函数存放在内存的代码区域内,它们同样有地址,我们如何能获得函数的地址呢?
  如果我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点如同数组一样,数组的名字就是数组的起始地址。
  定义一个指向函数的指针用如下的形式,以上面的test()为例:
int (*fp)(int a);//这里就定义了一个指向函数的指针
  函数指针不能绝对不能指向不同类型,或者是带不同形参的函数,在定义函数指针的时候我们很容易犯如下的错误。
int *fp(int a);//这里是错误的,因为按照结合性和优先级来看就是先和()结合,然后变成了一个返回整形指针的函数了,而不是函数指针,这一点尤其需要注意!
  下面我们来看一个具体的例子:
#include <iostream>
#include <string>
using namespace std;

int test(int a);

void main(int argc,char* argv[])
{
cout<<test<<endl;//显示函数地址
int (*fp)(int a);
fp=test;//将函数test的地址赋给函数学指针fp
cout<<fp(5)<<"|"<<(*fp)(10)<<endl;
//上面的输出fp(5),这是标准c++的写法,(*fp)(10)这是兼容c语言的标准写法,两种同意,但注意区分,避免写的程序产生移植性问题!
cin.get();
}

int test(int a)
{
return a;
}
  typedef定义可以简化函数指针的定义,在定义一个的时候感觉不出来,但定义多了就知道方便了,上面的代码改写成如下的形式:
#include <iostream>
#include <string>
using namespace std;

int test(int a);

void main(int argc,char* argv[])
{
cout<<test<<endl;
typedef int (*fp)(int a);//注意,这里不是生命函数指针,而是定义一个函数指针的类型,这个类型是自己定义的,类型名为fp
fp fpi;//这里利用自己定义的类型名fp定义了一个fpi的函数指针!
fpi=test;
cout<<fpi(5)<<"|"<<(*fpi)(10)<<endl;
cin.get();
}

int test(int a)
{
return a;
}


相关文档:

自己写的C/C++编译器Doctors[软件+文档]

更新版本1.0.1:该版本解决了之前1.0.0版本中找不到链接库libc.lib的问题,以及IDE下点击Project菜单出现的BUG。下载地址:http://download.csdn.net/source/1597132
 
Doctors编译器内部实现
For version 1.0.1
出处:http://blog.csdn.net/huyansoft
作者:胡彦
Copyright(c) 2009,All Rights Reserved
&nbs ......

C多维数组

 一、多维数组地址的表示方法
  设有整型二维数组a[3][4]如下:
  0 1 2 3
  4 5 6 7
  8 9 10 11
  设数组a的首地址为1000,各下标变量的首地址及其值如图所示。  
在前面曾经介绍过, C语言允许把一个二维数组分解为多个一维数组来处理。因此数组a可分解为三个一维数组,即a[0],a[1], ......

C类型转换


强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为实型(int)(x+y) 把x+y的结果转换为整型在使用强制转换时应注意以下问题:
1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int) ......

【题目4】如何自己实现C函数strstr()

解题思路: 这个网络上已经有很多答案,这里
列举一个复杂度为0(m*n)的例子。实现的原理
很简单,顺序遍历要查找的字符串,如果没有找
到,字符串指针往前一位,再往后比较要查找的
字符串(模式串),如下图所示:
a b c d  d  d a d a c a b d a d d d a d c k
     &nbs ......

VS2005中检测和更正 C/C++ 代码缺陷


VS2005中检测和更正 C/C++ 代码缺陷
2006-11-26 15:55
VS2005中提供的检测方法:
1 IDE(集成开发环境)集成
2 #pragma 支持
3 批注支持
4 作为签入策略的一部分运行分析工具
5 Team System 与 Team Build 的集成
6 命令行支持
一 代码分析工具用于检测常见的编码错误,例如缓冲区溢出、内存未初始化、空指针 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号