C++:17---函數指針

一、格式

  • 指針名前*號,并且將*和指針名用括號括起來

例如:

//指針名為pf,指向一個返回值為bool,參數為兩個const string&的函數
bool (*pf)(const string&, const string&);
//這個不是函數指針,而是一個返回值為bool*的pf函數
bool *pf(const string&, const string&);

二、函數指針的賦值

  • 可以直接將函數名賦值給函數指針,或者在函數名前加&符號都可以

bool lengthCompare(const string&, const string&);
bool (*pf)(const string&, const string&);
int main()
{
pf = lengthCompare; //正確
pf = &lengthCompare;//正確
return 0;
}

三、通過函數指針調用函數

調用方式

  • 如果pf是一個函數指針,那么*pf就是該指針所指向的函數,所以(*pf)()就是調用該函數

  • ANSI C標準允許程序員將(*pf)()簡寫為pf(),但是一定要記住這種寫法是一種簡寫形式

  • </

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444436.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444436.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444436.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

leetcode161. 相隔為 1 的編輯距離

給定兩個字符串 s 和 t&#xff0c;判斷他們的編輯距離是否為 1。 注意&#xff1a; 滿足編輯距離等于 1 有三種可能的情形&#xff1a; 往 s 中插入一個字符得到 t 從 s 中刪除一個字符得到 t 在 s 中替換一個字符得到 t 示例 1&#xff1a; 輸入: s "ab", t …

C語言-- 大端小端詳解

一、什么是大端和小端 所謂的大端模式,就是高位字節排放在內存的低地址端,低位字節排放在內存的高地址端。 所謂的小端模式,就是低位字節排放在內存的低地址端,高位字節排放在內存的高地址端。 簡單來說:大端——高尾端,小端——低尾端 舉個例子,比如數字 0x12 34 56 78…

leetcode164. 最大間距 借桶思想秒掉hard題

給定一個無序的數組&#xff0c;找出數組在排序之后&#xff0c;相鄰元素之間最大的差值。 如果數組元素個數小于 2&#xff0c;則返回 0。 示例 1: 輸入: [3,6,9,1] 輸出: 3 解釋: 排序后的數組是 [1,3,6,9], 其中相鄰元素 (3,6) 和 (6,9) 之間都存在最大差值 3。 示例 2: …

C++:18---函數模板(template)

一、模板的定義 template<typename T>以關鍵字template開頭,后面跟一個模板參數列表,列表里面用逗號將多個模板參數隔開定義的注意事項模板的編譯 當編譯器遇到一個模板定義時,并不生成代碼。只有當實例化處模板的一個特定版本時,編譯器才會生成代碼重點:通常,當我…

leetcode167. 兩數之和 II - 并沒有那么easy的easy題

給定一個已按照升序排列 的有序數組&#xff0c;找到兩個數使得它們相加之和等于目標數。 函數應該返回這兩個下標值 index1 和 index2&#xff0c;其中 index1 必須小于 index2。 說明: 返回的下標值&#xff08;index1 和 index2&#xff09;不是從零開始的。 你可以假設每…

C++:21---仿函數

什么是仿函數 所謂的仿函數(functor),是通過重載()運算符模擬函數形為的類。 因此,這里需要明確兩點: 1 仿函數不是函數,它是個類; 2 仿函數重載了()運算符,使得它的對你可以像函數那樣子調用(代碼的形式好像是在調用函數)。 假設有一個vector<string>,你的任務…

C++:20---類模板(template)

一、類模板與模板類 類模板:一個模板(是模板)模板類:調用類模板生成的類對象(是類實體),也稱為類模板的實例化類模板的定義: 與函數模板的定義是一樣的template <typename T> class Blob { public: Blob(); Blob(std::initializer_list<T> i); };模板類的使…

leetcode340. 至多包含 K 個不同字符的最長子串

給定一個字符串 s &#xff0c;找出 至多 包含 k 個不同字符的最長子串 T。 示例 1: 輸入: s "eceba", k 2 輸出: 3 解釋: 則 T 為 "ece"&#xff0c;所以長度為 3。 示例 2: 輸入: s "aa", k 1 輸出: 2 解釋: 則 T 為 "aa"&am…

Redis線上救命丸:01---誤操作AOF、RDB恢復數據

Redis的flushall/flushdb命令可以做數據清除&#xff0c;對于Redis的開發和運維人員有一定幫助&#xff0c;然而一旦誤操作&#xff0c;它的破壞性也是很明顯的。怎么才能快速恢復數據&#xff0c;讓損失達到最小呢&#xff1f;本文我們將結合之前學習的Redis相關知識進行分析&…

Log4j使用總結

一、介紹Log4j是Apache的一個開放源代碼項目&#xff0c;通過使用Log4j&#xff0c;我們可以控制日志信息輸送的目的地是控制臺、文件、GUI組件、甚至是套接口服務 器、NT的事件記錄器、UNIX Syslog守護進程等&#xff1b;我們也可以控制每一條日志的輸出格式&#xff1b;通過定…

C語言: GDB調試技術(一)

啟動GDB的方法有以下幾種: 1、gdb <program> program也就是你的執行文件,一般在當然目錄下。’ 例如我寫了一個簡單的helloword程序 #include <stdio.h> int main(){int a = 1;char* ch = "hello world";printf("%s\n",ch);return 0; }那么我…

C語言: ---windows下VS Debug調試

首先我先列出來常用的一些命令或者鍵盤控制: F5 開始調試,執行到斷點 Shift + F5 停止調試 F9 在光標所在行添加斷點 Shift + F9 QuickWatch Shift Ctrl F9 delete all 斷點 F10 單步執行 F11 進入調用的函數 Shift F11 跳出這次調用的函數 另外還可以用Disable all breakpoi…

leetcode350. 兩個數組的交集 II

給定兩個數組&#xff0c;編寫一個函數來計算它們的交集。 示例 1: 輸入: nums1 [1,2,2,1], nums2 [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 [4,9,5], nums2 [9,4,9,8,4] 輸出: [4,9] 說明&#xff1a; 輸出結果中每個元素出現的次數&#xff0c;應與元素在兩個數組中出…

C語言: ---Linux下ulimit是什么鬼

其實ulimit的講解不屬于C或者C++ 語言范疇,他只是在我們日常開發或者線上linux運行環境不可缺少的工具。 比如我們要查看服務器崩潰的core文件,允許core文件產生,都需要ulimit -c命令調整。 比如我們設置的當前運行環境的棧空間過小,容易產生棧溢出,那么我們…

C語言: ---gdb查看內存和寄存器內容

gdb沒有CodeWarrior強大,但是也提供了查看寄存器的命令:(gdb) info register r1r1 0xbffffb40 3221224256(gdb) info registersr0 0x1000052c 268436780r1 0xbffffb40 3221224256r2 0x48026ea0 1208118944r3 …

leetcode52. N皇后 II 最強解法直接秒殺100%

n 皇后問題研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。 上圖為 8 皇后問題的一種解法。 給定一個整數 n&#xff0c;返回 n 皇后不同的解決方案的數量。 示例: 輸入: 4 輸出: 2 解釋: 4 皇后問題存在如下兩個不同的解法。 [ […

C語言:---gdb多線程調試

1)恢復程序運行和單步調試 當程序被停住了,你可以用continue命令恢復程序的運行直到程序結束,或下一個斷點到來。也可以使用step或next命令單步跟蹤程序。 continue [ignore-count] c [ignore-count] fg [ignore-count] 恢復程序運行,直到程序結束,或是下一個斷點到來。ig…

leetcode145. 二叉樹的后序遍歷 意想不到的騷操作

給定一個二叉樹&#xff0c;返回它的 后序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [3,2,1] 進階: 遞歸算法很簡單&#xff0c;你可以通過迭代算法完成嗎&#xff1f; 思路&#xff1a;前序遍歷左右交換&#xff0c;然后倒序輸出 原因&am…

C++:29 --- C++繼承關系下的內存布局(下)

1 單繼承 C++ 提供繼承的目的是在不同的類型之間提取共性。比如,科學家對物種進行分類,從而有種、屬、綱等說法。有了這種層次結構,我們才可能將某些具備特定性質的東西歸入到最合適的分類層次上,如“懷孩子的是哺乳動物”。由于這些屬性可以被子類繼承,所以,我們只要知道…

C++:30 ---C++類成員,成員函數的內存布局

前面兩篇文章我相信大家反復讀了之后對這節不陌生了: 首先來看代碼: class Demo { public://靜態成員變量static const int sx = 0;//靜態函數static void SF1() {} public://成員變量int x; public://成員函數void F1() {cout << "Im from Demo::F1()" <…