{"id":16862,"date":"2024-03-15T13:50:03","date_gmt":"2024-03-15T13:50:03","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/"},"modified":"2025-08-07T06:30:59","modified_gmt":"2025-08-07T06:30:59","slug":"how-to-pass-a-function-pointer-as-a-parameter-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/","title":{"rendered":"How to pass a function pointer as a parameter in C++?"},"content":{"rendered":"<p>In C++, you can pass a function pointer as an argument to another function. Here is an example:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-meta\">#<span class=\"hljs-keyword\">include<\/span> <span class=\"hljs-string\">&lt;iostream&gt;<\/span><\/span>\r\n\r\n<span class=\"hljs-comment\">\/\/ \u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u6307\u9488\u7c7b\u578b<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">typedef<\/span> <span class=\"hljs-title\">void<\/span> <span class=\"hljs-params\">(*FunctionPtr)<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span>)<\/span><\/span>;\r\n\r\n<span class=\"hljs-comment\">\/\/ \u63a5\u53d7\u51fd\u6570\u6307\u9488\u4f5c\u4e3a\u53c2\u6570\u7684\u51fd\u6570<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">void<\/span> <span class=\"hljs-title\">printNumber<\/span><span class=\"hljs-params\">(FunctionPtr ptr, <span class=\"hljs-type\">int<\/span> num)<\/span> <\/span>{\r\n    <span class=\"hljs-built_in\">ptr<\/span>(num);\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u88ab\u4f20\u9012\u7684\u51fd\u6570<\/span>\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">void<\/span> <span class=\"hljs-title\">printSquare<\/span><span class=\"hljs-params\">(<span class=\"hljs-type\">int<\/span> num)<\/span> <\/span>{\r\n    std::cout &lt;&lt; <span class=\"hljs-string\">\"Square: \"<\/span> &lt;&lt; num * num &lt;&lt; std::endl;\r\n}\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-type\">int<\/span> <span class=\"hljs-title\">main<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\r\n    <span class=\"hljs-comment\">\/\/ \u5c06\u51fd\u6570\u6307\u9488\u4f5c\u4e3a\u53c2\u6570\u4f20\u9012\u7ed9\u53e6\u4e00\u4e2a\u51fd\u6570<\/span>\r\n    <span class=\"hljs-built_in\">printNumber<\/span>(printSquare, <span class=\"hljs-number\">5<\/span>);\r\n\r\n    <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-number\">0<\/span>;\r\n}\r\n<\/code><\/pre>\n<p>In the example above, we first define a function pointer type FunctionPtr, which takes an int parameter and returns void. Then, we define a function printNumber that takes a function pointer as a parameter, accepting a function pointer and an int parameter, and invokes the passed function pointer. Finally, in the main function, we pass the pointer of the printSquare function as an argument to the printNumber function.<\/p>\n<p>When the program is executed, it will output:<\/p>\n<pre class=\"post-pre\"><code>Square: 25\r\n<\/code><\/pre>\n<p>This proves that the function pointer was successfully passed as a parameter to another function.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C++, you can pass a function pointer as an argument to another function. Here is an example: #include &lt;iostream&gt; \/\/ \u5b9a\u4e49\u4e00\u4e2a\u51fd\u6570\u6307\u9488\u7c7b\u578b typedef void (*FunctionPtr)(int); \/\/ \u63a5\u53d7\u51fd\u6570\u6307\u9488\u4f5c\u4e3a\u53c2\u6570\u7684\u51fd\u6570 void printNumber(FunctionPtr ptr, int num) { ptr(num); } \/\/ \u88ab\u4f20\u9012\u7684\u51fd\u6570 void printSquare(int num) { std::cout &lt;&lt; &#8220;Square: &#8221; &lt;&lt; num * num &lt;&lt; std::endl; } int main() { [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[453,1402,299,1404,1403],"class_list":["post-16862","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to pass a function pointer as a parameter in C++? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to pass a function pointer as a parameter in C++?\" \/>\n<meta property=\"og:description\" content=\"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-15T13:50:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-07T06:30:59+00:00\" \/>\n<meta name=\"author\" content=\"Noah Thompson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Noah Thompson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\"},\"author\":{\"name\":\"Noah Thompson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a\"},\"headline\":\"How to pass a function pointer as a parameter in C++?\",\"datePublished\":\"2024-03-15T13:50:03+00:00\",\"dateModified\":\"2025-08-07T06:30:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\"},\"wordCount\":120,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\",\"name\":\"How to pass a function pointer as a parameter in C++? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T13:50:03+00:00\",\"dateModified\":\"2025-08-07T06:30:59+00:00\",\"description\":\"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to pass a function pointer as a parameter in C++?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a\",\"name\":\"Noah Thompson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"caption\":\"Noah Thompson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to pass a function pointer as a parameter in C++? - Blog - Silicon Cloud","description":"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/","og_locale":"en_US","og_type":"article","og_title":"How to pass a function pointer as a parameter in C++?","og_description":"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T13:50:03+00:00","article_modified_time":"2025-08-07T06:30:59+00:00","author":"Noah Thompson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Noah Thompson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/"},"author":{"name":"Noah Thompson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a"},"headline":"How to pass a function pointer as a parameter in C++?","datePublished":"2024-03-15T13:50:03+00:00","dateModified":"2025-08-07T06:30:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/"},"wordCount":120,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/","name":"How to pass a function pointer as a parameter in C++? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T13:50:03+00:00","dateModified":"2025-08-07T06:30:59+00:00","description":"Learn about how to pass a function pointer as a parameter in c++?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-pass-a-function-pointer-as-a-parameter-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to pass a function pointer as a parameter in C++?"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a","name":"Noah Thompson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","caption":"Noah Thompson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16862","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=16862"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16862\/revisions"}],"predecessor-version":[{"id":50435,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/16862\/revisions\/50435"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=16862"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=16862"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=16862"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}