Time of Update: 2018-12-04
問題11:下面這個函數希望完成什麼任務?[cpp] view plaincopyprint?int func(int x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 解答:這個函數是求一個整數的二進位表示中含1的個數。假定x = 9999,該函數返回8。這是道微軟的面試題,在《
Time of Update: 2018-12-04
http://blog.csdn.net/tianmo2010/article/details/8706495類型轉換機制:可以分為隱式類型轉換和顯示類型轉換,顯示類型轉換也稱為強制類型轉換(cast),有四種名字命名的強制類型轉換操作符:static_cast、dynamic_cast、const_cast、reinterpret_cast。隱式的類型轉換比較常見,在混合的類型運算式中經常發生。最簡單的為整型提升,對於所有比int小的整型,包括char、signed
Time of Update: 2018-12-04
zz from: http://blog.csdn.net/TrueLie/archive/2006/08/09/1043195.aspxC語言測試是招聘嵌入式系統程式員過程中必須而且有效方法。這些年,我既參加也組織了許多這種測試,在這過程中我意識到這些測試能為帶面試者和被面試者提供許多有用資訊,此外,撇開面試的壓力不談,這種測試也是相當有趣的。從被面試者的角度來講,你能瞭解許多關於出題者或監考者的情況。這個測試只是出題者為顯示其對ANSI標準細節的知識而不是技術技巧而設計嗎?這個愚蠢的問題嗎?
Time of Update: 2018-12-04
若有 unsigned char *p1; unsigned long *p2; p1 = (unsigned char *)0x1000; p2 = (unsigned long *)0x2000;請問 p1+5=( ) p2+5=( ) #include <stdio.h>int main(){unsigned char *p1;unsigned long *p2;p1 =
Time of Update: 2018-12-04
這是本人在本科階段的哈弗曼樹的代碼實現。設計hafuman 編碼器與解碼器問題描述:利用哈夫曼編碼進行資訊通訊可以大大提高通道的利用率,縮簡訊息傳輸時間,降低傳輸成本。但是,這要求在發送端通過一個編碼系統對待傳輸資料預先編碼;在接受端將傳來的資料進行解碼。對於雙工通道(即可以雙向傳輸資訊的通道),每端都需要一個完整的編/解碼系統。試為這樣的資訊收發站編寫一個哈夫曼碼的編/解碼系統。基本要求:根據某字元檔案統計字元出現頻度,構造Huffman
Time of Update: 2018-12-04
問題 6:非C++內建型別A 和B,在哪幾種情況下B 能隱式轉化為A? (1)class A { ...... }; class B : public A { ……} ; // B 公有繼承自A,可以是間接繼承的(2)class A { ...... }; class B { operator A() { return A::A(); } ......}; // B 實現了到A 的類型轉化(3)class A { A( const B& ); } ; // A
Time of Update: 2018-12-04
問題1 :寫一個交換兩個數的宏方法1:可以用異或運算來做,如果是浮點數,這個方法就不行了[cpp] view plaincopyprint?#define _swap(a,b) { a=a^b; b=a^b;a=a^b; } 方法2:用加減法來做,可能會溢出[cpp] view plaincopyprint?#define _swap(a,b) { a=a+b;b=a-b;a=a-b; } 下面兩種其實已經算是函數了。方法3:用記憶體複製函數來做[cpp] view
Time of Update: 2018-12-04
1.在C++ 程式中調用被C 編譯器編譯後的函數,為什麼要加extern “C”?答:首先,extern是C/C++語言中表明函數和全域變數作用範圍的關鍵字,該關鍵字告訴編譯器,其聲明的函數和變數可以在本模組或其它模組中使用。通常,在模組的標頭檔中對本模組提供給其它模組引用的函數和全域變數以關鍵字extern聲明。extern "C"是串連申明(linkage declaration),被extern
Time of Update: 2018-12-04
有人視宏為洪水猛獸,甚至要求完全從C/C++中摒棄,有人則認為宏為至尊寶典,在邏輯代碼中都大量使用。個人認為這是個仁者見仁智者見智的問題,摒棄就沒必要了,看看宏在MFC和ATL中的一些經典應用,你會發現如果不使用宏來實現一些訊息映射和對象映射神馬的那將讓“苦逼”程式員多花費多少寶貴的時間。當然也不能濫用,尤其是盡量不要在邏輯代碼中使用,宏中的邏輯出問題後,調試時候的痛苦你就真的會發現原來程式員真的挺“苦逼”的。 其實很多人對宏的“恐懼”可能源於下面的一個簡單的宏的實現: #d
Time of Update: 2018-12-04
C/C++筆試,面試題目匯總1.求下面函數的傳回值(微軟)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:將x轉化為2進位,看含有的1的個數。2.
Time of Update: 2018-12-04
簡介 對於很多初學者來說,往往覺得回呼函數很神秘,很想知道回呼函數的工作原理。本文將要解釋什麼是回呼函數、它們有什麼好處、為什麼要使用它們等等問題,在開始之前,假設你已經熟知了函數指標。 什麼是回呼函數? 簡而言之,回呼函數就是一個通過函數指標調用的函數。如果你把函數的指標(地址)作為參數傳遞給另一個函數,當這個指標被用為調用它所指向的函數時,我們就說這是回呼函數。 為什麼要使用回呼函數?
Time of Update: 2018-12-04
1、static_cast Operator MSDN: The expression static_cast < type-id > ( expression ) converts expression to the type of type-id based solely on the types present in the expression. No run-time type check is made to ensure the safety of the
Time of Update: 2018-12-04
class customer{public: customer() { } ~customer() { }public: int c_id; char name[10]; char address[20]; int age; std::string sztest; };void init_DBT(DBT * key, DBT * data){ memset(key, 0, sizeof(DBT)); memset(data, 0, sizeof(DBT));}void CTestDBDlg:
Time of Update: 2018-12-04
淺談C/C++記憶體流失及其偵查工具2006.05.25轉載自:http://www.uml.org.cn/c%2B%2B/200605254.htm 對於一個c/c++程式員來說,記憶體流失是一個常見的也是令人頭疼的問題。已經有許多技術被研究出來以應對這個問題,比如Smart Pointer,Garbage Collection等。Smart Pointer技術比較成熟,STL中已經包含支援Smart
Time of Update: 2018-12-04
Pyton和C分別有著各自的優缺點,用Python開發程式速度快,可靠性高,並且有許多現成模組可供使用,但執行速度相對較慢;C語言則正好相反,其執行速度快,但開發效率低。為了充分利用兩種語言各自的優點,比較好的做法是用Python開發整個軟體架構,而用C語言實現其關鍵模組。本文介紹如何利用C語言來擴充Python的功能,並輔以具體的執行個體講述如何編寫Python的擴充模組。Python是一門功能強大的進階指令碼語言,它的強大不僅表現在其自身的功能上,而且還表現在其良好的可擴充性上,正因如此,
Time of Update: 2018-12-04
C中調用PYTHON#include <Python.h>int main(int argc, char *argv[]){Py_Initialize();PyRun_SimpleString("from time import time,ctime/n""print 'Today is',ctime(time())/n");Py_Finalize();return 0;} 0. 壞境設定把python的include/libs目錄分別加到vc的include/lib
Time of Update: 2018-12-04
本文使用了Boost中有關Python的部分,並著重介紹如何用C++寫的函數或是類,並讓Python能調用。先看我們設計好的C++函數和類。#include <string>#include <windows.h>//定義一個函數void msgbox(const std::string& str){ MessageBox(0,str.c_str(),"msgbox",MB_OK);}//定義一個C++類class Hello{public: std:
Time of Update: 2018-12-04
1. 預設建構函式,賦值函數,預設複製建構函式ClassA a;預設建構函式a=b;賦值ClassA(const ClassA&
Time of Update: 2018-12-04
模板和宏前些日子,論壇裡大打口水仗的時候,有人提出這樣一個論斷:模板本質上是宏。於是,諸位高手為此好好辯論了一番。我原本也想加入論戰,但是覺得眾人的言論已經覆蓋了我的想法,所以也就作罷了。儘管沒有參與討論,但“模板究竟和宏有什麼關係”這個問題,始終在我的腦海中上下翻飛。每當我能夠放鬆下來的時候,這個問題便悄悄地浮現。(通常都是哄兒子睡下,然後舒舒服服地沖個熱水澡的時候:))。我思索了半天,決定做些實際的代碼,以瞭解兩者的差異。現在,我把實驗的結果提交給大家,讓眾人來評判。模板和宏是完全兩個東西,
Time of Update: 2018-12-04
使用者定義的類型,如:字串,日期,複數,聯合體以及檔案常常重載二元 + 操作符以實現對象的串連,附加或合并機制。但是要正確實現 + 操作符會給設計,實現和效能帶來一定的挑戰。本文將概要性地介紹如何選擇正確的策略來為使用者定義型別重載這個操作符。考慮如下的運算式: int x=4+2;內建的 + 操作符有兩個類型相同的運算元,相加並返回右值 6,然後被賦值給 x。我們可以斷定內建的 +