1樓:匿名使用者
for(int i=0;ib[i+1]?a:b[i+1];
這裡的 b[i+1] 下標越界了,例如 cout<當 i=3 時,b[i+1] 越界,所以迴圈退出條件應該為 i該改為 while(i char * a=new char ; 這裡的分配是不需要的,因為 a 被初始化後,緊接著就會在迴圈中被賦其他值,也就是說原來初始化時的那個指標丟失了。而函式返回後的 delete p 刪除的是 maxn 的返回值,也就是 str 中最長的那個字串的地址,而這個地址是一個靜態字串,是不能釋放的。 所以 char * a=new char; 改為 char* a = null; 緊接著的 a=b[0]; 刪除 程式最後的 delete p; 也要刪除。 2樓:匿名使用者 邏輯錯誤 下面語句中 當i=4時 b[i+1] = b[5] 越界 while(i i++;} 3樓:匿名使用者 template t maxn(t b,int num) template<> char* maxn( char* b,int num) i++;} 在c++中模板的顯式具體化感覺可以用常規函式替代的,模板的顯式具體化有什麼特別與常規函式的嗎 4樓:淪落人 我覺得完全可以代替。 但是這樣做顯得很系統吧,就比如你有一個模板,只有int處理方式不同,那麼把int具體化,顯得很系統很規整。當然直接寫一個普通的int函式來遮蔽模板也是可以的,只是看上去就沒那麼整齊,可讀性降低了。 5樓:如果 模板template的作用就是過載和**複用,就是為了簡化你書寫的**。顯示具體化就是使用模板的一種方法,把型別,引數選定了;當然還有顯示例項化和隱式例項化... c++模板類成員函式部分具體化
20 6樓:匿名使用者 給你一個問題,名稱之名稱有何奧妙? 模板名稱是什麼樣子的呢。 對於templateclass knap,它的某個具體使用應該是knap,而不是你以為的knap,如果typew預設為int不會產生什麼負面的影響,你可以templateclass knap(應該可以這樣,沒嘗試了);如果必須針對性寫一個不同版本的knap,你應該寫成: templateclass knap; 這個模板是2個型別引數,並不是一個型別引數。 7樓:匿名使用者 template class knap // 我就看出這裡少個分號 函式模板的具體化有什麼意義嗎?? 8樓:平填真杯具平男 比如,你定義了一個函式模板 template void func(const t& t)但是,當t是整數的時候你不想dosomething,而是想killsomeone,那就需要具體化了。 具體化有2種形式,一種是顯式具體化 即定義一個特殊型別的實現 template<> void func(const int& t)這樣,除了int型以外,其他型別仍然按照dosomething來執行另一種方式是寫一個函式來遮蔽模板 比如,定義如下 void func(const int& t)這樣,在編譯連結時這個函式就遮蔽掉了模板,自動採用定義的函式。 以上就是函式模板具體化的作用和方法,如有不明白,可繼續追問 9樓:匿名使用者 就是確定了引數型別,用該型別替換函式模板裡的模板引數,生成能夠處理該型別的函式**,即模板函式。 總之一句話,就是將模板具體成某一型別引數的具體函式 關於c++模版具體化 10樓: 幫你寫好了,給點分數吧。linux下編譯的命令: gcc -g -o max max.cpp -lstdc++ #include #include using namespace std; //模板函式 template ty maxn(ty array, const size_t size) }return max; }//模板特化函式 const char* maxn(const char* array, const size_t size) }return mstr; }int main( void ) ; //6個元素的int陣列 double x2 = ;//4個元素的double陣列 const char* x3 = ;//5個元素的字串指標陣列 //不同的陣列呼叫maxn函式 int m1 = maxn(x1, sizeof(x1)/sizeof(x1[0])); double m2 = maxn(x2, sizeof(x1)/sizeof(x2[0])); const char* m3 = maxn(x3, sizeof(x3)/sizeof(char*)); //輸出結果 cout << "maxn( x1 ) = "<< m1 << endl; cout << "maxn( x2 ) = "<< m2 << endl; cout << "maxn( x3 ) = "<< m3 << endl; return 0;} c++函式模版顯示具體化問題
20 11樓:匿名使用者 typedef char* t; const t x; 顯然這個宣告表示 x 的值不可以修改。換言之 x 的型別是 char * const 而不是 const char * ,如果 x 的型別是 const char * 的話 x 的值就可以更改了(*x 能不能修改?那關我什麼事) 這個例子就說明如果 t 表示 char* 那麼 const t 肯定就表示 char * const,否則c++就含有自相矛盾的規則了。也許寫成 t const 更好一點 既然引數不是 const char*,返回也就不應該是 const char* 如果 t 表示 const char * 的話,返回就是 const char*。下面的特化是合法的: template <>const char * search_max(const char * const a , int n); c++中函式模板顯示具體化問題大家快來看看啊~(跪求答案) 12樓:匿名使用者 #include #include using namespace std; template void maxn(t ar,int n); templatevoid maxn(t * ar,int n);//我這個顯示具體化錯在**啊?模板型參類表不能為空; int main() ; double tr[4]=; string ch[5]= //型別不對; ; maxn(aa,6); maxn(tr,5); maxn(ch,5); return 0; } template void maxn(t ar,int n);在這裡模板形參列表中的類名無關緊要, 如templatereturn_type name(); 與templatereturn_type name(); 是一樣的。 好好與你的程式對照一下!!! 為什麼叫c,為什麼叫c c是高階語言的一種,c 是對c的補充以及完善。c可以說是程序導向的語言,c 就可以說是面嚮物件語言,對c的完善與擴充。具體來說c 類是對c結構體的擴充,應為c 結構體 struct 和類 class 幾乎完全差不多,只是預設的訪問許可權不同,以及其他細微的差別!所以說把c學好... 還沒學到這麼深奧的東西。期待高手回答。這麼像我以前公司的一個專案 求助,c語言程式設計的程式設計題?include 判斷a是否為素數 int isprime int a else printf no n 執行結果 這類的題目 非常多請看 int isprime int a return 1 int ... 這個.一般都是建立一個緩衝區 byte buffer new byte 1024 然後通過read迴圈去填充緩衝區的.直到read到buffer中的為null了.最後你可以通過總的接受到的資料得到長度.不要妄想在接收完之前能得到資料長度.不現實的.伺服器端向客戶端傳送檔案之前,可以先向客戶端傳送一個...物件導向的程式設計和C語言的結構化程式設計有什麼不同
求助網路c語言程式設計,求助,C語言程式設計的程式設計題?
關於C,100分 相送。c中socket程式設計中,怎麼獲取接受到得資料長度