pc网站制作公司短视频剪辑培训班速成
pc网站制作公司,短视频剪辑培训班速成,赚钱的十大个人网站,电子商务网站建设的实训心得本文转载自: http://www.cnblogs.com/AnnieKim/archive/2011/11/20/2255813.html#undefined 这篇是为了加深记忆所写。发现#xff0c;很多知识若不经过反复的琢磨和动手实践#xff0c;是很难记得住的。 1#xff09; 函数指针的初始化。 函数如下#xff1a; int Com…本文转载自: http://www.cnblogs.com/AnnieKim/archive/2011/11/20/2255813.html#undefined 这篇是为了加深记忆所写。发现很多知识若不经过反复的琢磨和动手实践是很难记得住的。 1 函数指针的初始化。 函数如下 int CompareString(const string str1, const string str2){return str1.compare(str2); } 函数的初始化有两种方式 第一种也是最普遍的方式 int (*CompareFunction)(const string, const string) CompareString; 第二种是使用typedef定义函数类型这种写法有助于对代码的理解 typedef int (*CompareFunctionType)(const string, const string);
CompareFunctionType CompareFunction CompareString; 2 函数指针赋值。 函数名可以理解为该类型函数的指针。当然取地址操作符作用于函数名上也能产生指向该类型函数的指针。也就是说下面两种赋值都是可行的: CompareFunctionType CompareFunction CompareString;
CompareFunctionType CompareFunction CompareString; 3 函数调用。 无论是用函数名调用还是用函数指针调用还是用显式的指针符号调用其写法是一样的 CompareString(abc, cba);
CompareFunction(abc, cba);
(*CompareFunction)(abc, cba); 4 函数指针的数组。 对于函数指针的数组强烈建议使用typedef方式定义类型之后再使用不然影响代码的阅读性继续以以上例子为例 //without typedefint (*CompareFunctionArray[3])(const string, const string);//with typedefCompareFunctionType CompareFunctionTypeArray[3]; 5 函数指针用做函数返回值的类型。 到这一步会发现typedef是多么的好用了。不然我是完全读不懂下面语句的意思的 //without typedefint (*func(int*, int))(const string, const string); 上面的声明将func(int*, int)声明为一个函数返回值为函数指针函数类型为 int (*)(const string, const string)。 多么的晦涩啊 如果写成typedef就不用这么纠结了足见typedef的作用 CompareFunctionType func(int*, int); 6 指向extern “C”函数的指针。 《C primer 3》中有指出指向C函数的指针和指向C函数的指针类型不同但是现在的很多编译器都有语言扩展认为这两种函数的指针具有相同的特性。 所以我在vs 2010中做了尝试结果证明是支持这种语言扩展的。 函数声明如下 复制代码 extern C int InsideFunctionC(const string str1, const string str2){return str1.compare(str2);}int InsideFunctionCPlusPlus(const string str1, const string str2){return str1.compare(str2); } 函数指针的初始化和调用允许赋值为指向C函数的指针
int (*CompareFunction)(const string, const string) InsideFunctionC;另外还有一点当extern “C”应用在一个声明上时所有被它声明的函数都将受到影响。举个例子
extern C void OutSideFunction(int (*fc)(const string, const string))
{coutfc(abc, cba)endl;;
} 这里的OutSideFunction和fc都将受到extern “C”的影响但是vs2010编译器是支持一个指向C函数的指针作为OutSideFunction的参数。如下 int main()
{OutSideFunction(InsideFunctionC);OutSideFunction(InsideFunctionCPlusPlus);return 0; } 到此就差不多了。昨天看了一遍今天又写博客温习了一遍应该算是加深记忆了。 转载于:https://www.cnblogs.com/lanqiu5ge/p/9472221.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89387.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!