乙個C 小題目引出的問題

2021-07-25 09:59:39 字數 1107 閱讀 6894

題目:

第一眼肯定是覺得小意思,隨便寫個

int add(int a,int b)

這種寫法有很明顯的缺陷,引數傳進來會複製乙份,然而我們可以優化一下,例如說指標?

int add(int *a,int *b)

在c++有更好的方法,例如引用,呼叫時就不需要書寫&號了~

int add(int &a,int &b)

有可能傳入的是常量呢,那麼必定報錯,所以加上乙個const宣告,令其變為右值引用

int add(const int &a,const int &b)

這種簡短的函式我們最好讓它成為內聯函式,畢竟效率比較快

inline int add(const int &a, const int &b)

唔或許這題說的是模版函式?

templateinline t add(const t &a, const t &b)

ok~!到這步基本上就夠用了我們來呼叫一下

int sum = add(1,5);

什麼你就是這樣呼叫的?不知道這樣浪費時間麼,由於函式返回時會建立乙個副本,所以我們可以利用右值引用使返回所建立的副本生存期延長

int && sum = add(1,5);

如果希望返回的值不可改變可以這樣

const int & sum = add(1,5);

所以我們可以這樣寫

#include using namespace std;

templateinline t add(const t &a, const t &b)

int main(int argc, char *argv)

乙個小題目

看到一道題目,自己嘗試了一下 編寫乙個在1,2,9 順序不能變 數字之間插入 或 或什麼都不插入,使得計算結果總是100的程式,並輸出所有的可能性。例如 1 2 34 5 67 8 9 100.首先要考慮所有的可能性,每兩個數字間有3種可能,一共有3的8次方種可能。這樣就能通過遍歷實現。void v...

原型的乙個小題目

題目要求 建立乙個shape物件,該物件有乙個type屬性和gettype 方法 定義乙個原型為shape的 建構函式,用 建立的物件應有三個物件屬性 a b c,分別用於表示三角形的三條邊 在物件原型中新增乙個名為getperimeter 的新方法,用下面的 來進行測試 var t new 1,2...

統計的乙個小題目python實現

最近面試碰到的乙個題目,業餘時間用python實現的。拿到資料,先用sort 命令排序,也可再進一步去重複 sort k 1,2 data.txt uniq data.new 1 coding utf 8 23 第乙個欄位是使用者uid,第二個欄位是商品tid,統計每個商品的使用者購買數量 4imp...