Time of Update: 2018-12-05
一個公司的C/C++程式員面試問題收藏自http://blog.csdn.net/w3nsir來自vchelp主要針對應界畢業的同學和一年以下工作經驗的人;希望對大家有協助;演算法:1.什麼是NPC,NP-Hard?2.起泡排序的時間複雜度是多少?說出至少一個比它更快的演算法;排序的極限時間複雜度是多少?3.有一個鏈表,如何判斷它是一個迴圈鏈表?如果鏈表是單向的呢?如果出現迴圈的點可能在任意位置呢?如果緩衝空間是有限的,比如是一個常數呢?如果只能使用2個緩衝呢?4.有一個檔案,儲存了若干個整數,
Time of Update: 2018-12-05
電腦網路實驗要求寫一個檔案傳輸程式。由於以前自己寫的線程類和SOCKET類丟失掉了(寢室電腦被盜),現在重寫這幾個類,乾脆就寫了一個線程池,用的是C++STL和純API。而且,為了保證這個線程類本身是安全執行緒的,我還使用了WinApi中的互斥量。同時仿照C#的類庫,線上程類中加入了Join方法。調用線程對象Join方法的線程將等待線程對象直到執行完畢。以下是原始碼。/////////////////////////////////MyThread.h//////////////////////
Time of Update: 2018-12-05
第六章講的是結構體,包括structure, union和bit-fields。除了介紹基本知識,作者在舉例子的時候牽扯了一些資料結構的知識,比如二叉樹、雜湊表等,學起來很有意思。這章的內容上大學學C語言時好像沒有作為重點,學得稀裡糊塗,出來之後才發覺很有用。第一節 結構體基本知識這節一個要注意的地方是,在結構體struct point { int x; int y;};的聲明中,point是可以省略的,作者管它叫structure
Time of Update: 2018-12-05
今天開始認真讀這本清華版的資料結構,嚴蔚敏和吳偉民編著。也許你會奇怪我為什麼會選擇這本C語言描述的資料結構書,現在的資料結構不都用物件導向語言描述嗎?其實這本書不是我選的,而是我參加的機試指定的參考書。不過對於本書選用的語言,我倒有自己的看法。用C語言描述顯然有很多不便,但是在一個充斥著用OO描述資料結構的世界裡,從OO中抽身出來用C看待資料結構的思想,也許更能看清資料結構的本質。好了,言歸正傳。在今天這第一篇文章裡,我來探討一下資料結構的基本概念。作者一開篇就歸納了電腦解題的一般步驟:“首先要
Time of Update: 2018-12-05
先看看下面一段代碼:#include <stdio.h>#include <stdlib.h>void F(int *pi){ pi = (int *)malloc(sizeof(int));}main(){ int *pi = NULL; F(pi); printf("%d/n", pi ==
Time of Update: 2018-12-05
文章目錄 HTML Tags and JavaScript tutorial HTML Tags and JavaScript tutorial在consolemode中使用 C/C++ 編譯器我總是鼓勵 C/C++ 的學習者,在剛接觸這個程式語言的時候,先以 console mode(DOS-like)程式為目標。換言之,不要一開始就想寫 GUI 程式、想開視窗、想有眩目亮麗的畫面 -- 那隻是未走先飛,揠苗助長罷了。所謂
Time of Update: 2018-12-05
轉自: http://blog.chinaunix.net/space.php?uid=22566367&do=blog&id=382046最近,遇到一個c語言的不定參數問題。其實,對於c語言的不定參數問題,只需要三個函數就可以搞定了。這三個函數的標頭檔是<stdarg.h>,其實下面的三個函數都是一個宏定義(macro)。 這三個函數是: void va_start(va_list ap, last); type va_arg(va_list
Time of Update: 2018-12-05
對於編程式來講,我們需要十分注意錯誤的返回,所以我想要謝謝我對於error.h的理解。 對於早期的unix程式採用的“其他地方”,是一個具有外部連結的資料對象。任何失敗的系統調用都從核心中儲存一個叫做errno的整型變數作為錯誤編,它或者返回-1,或者返回其他適當的無意義的值來說明一個錯誤。但是,如果兩個系統調用都發生了錯誤,但是還沒來的及輸出那麼其中一個錯誤就有可能被覆蓋掉。這是不安的。 數學錯誤: 當一個結果在數值上太大
Time of Update: 2018-12-05
It is possible for a C program to print the currently executing line of source code, the file of the source code, and the name of the current function. The currently executing line is available in a preprocessor variable called__LINE__:#include
Time of Update: 2018-12-05
// ExceptionStudy.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;class CMyException{public:CMyException(void){cout << "CMyException constructor" <<
Time of Update: 2018-12-05
#include "stdafx.h"#include <iostream>extern "C" {#include "lua.h"#include "lauxlib.h"#include "lualib.h"}#pragma comment(lib,"lua51.lib")using namespace std;int LuaAdd(lua_State* L,int x,int y){int
Time of Update: 2018-12-05
1.介紹Log4cxx是開放原始碼項目Apache Logging Service的子項目之一,是Java社區著名的log4j的c++移植版,用於為C++程式提供日誌功能,以便開發人員對目標程式進行調試和審計。有關log4cxx的更多資訊可以從Apache Logging Service的網站http://logging.apache.org獲得。當前的穩定版本為0.9.7,本文內容及範例程式碼都是基於此版本。此外,範例程式碼的編譯環境為Windows環境中的Microsoft Visual
Time of Update: 2018-12-05
關鍵字:MoveFile, MoveFileEx, CopyFile, 檔案唯讀屬性, 檔案隱藏屬性,GetFileAttributes, SetFileAttributes, 檔案屬性的讀取與設定1. 檔案的唯讀和隱藏屬性對函數的影響1.1 移動操作(MoveFile和MoveFileEx)testcase 1: 設源檔案為c:/file1, 目標檔案file2, 且目標檔案不存在。測試結果:
Time of Update: 2018-12-05
很多時候我們需要使用到自訂控制項 而在C#中 我們主要以3中方式建立自訂控制項,還有些需要注意的地方時常被忽略 比如Click事件,使用者控制項的Click並不像系統的Button單擊1.繼承自.NET類庫中已有的控制項 如TextBox MenuStrip Pannel2.繼承自Control類3.繼承自UserControl類 下面是3個小樣本1.繼承自類庫中現有的控制項下面自訂一個ExtendTextBox 該控制項擴充了一個屬性,可以現在文字框只能輸入數字,字母或者所有字元 1
Time of Update: 2018-12-05
很多時候我們需要使用到自訂控制項 而在C#中 我們主要以3中方式建立自訂控制項,還有些需要注意的地方時常被忽略 比如Click事件,使用者控制項的Click並不像系統的Button單擊1.繼承自.NET類庫中已有的控制項 如TextBox MenuStrip Pannel2.繼承自Control類3.繼承自UserControl類 下面是3個小樣本1.繼承自類庫中現有的控制項下面自訂一個ExtendTextBox 該控制項擴充了一個屬性,可以現在文字框只能輸入數字,字母或者所有字元 1
Time of Update: 2018-12-05
遞迴思想非常簡單也是最常見的演算法之一,其中一代表例題就是漢諾塔問題。解題的演算法很簡單:void Hanoi(int n,int A,int B,int C){ if(n>0) { Hanoi(n-1,a,c,b); move(a,b); show(); Hanoi(n-1,c,b,a);
Time of Update: 2018-12-05
Factory 方法模式是對簡單原廠模式的改進。首先看看簡單原廠模式的缺點。軟體是之所以區別於程式,是因為它可以被人們使用,並能間接創造效益。需求是軟體開發的核心,忽視使用者的需求,軟體本身就沒有存在的價值。假如Nokia又新開發了一款新手機N99,對於採用簡單原廠模式設計的系統,我們的做法是:1.新增一個CN99類繼承自CNokia抽象類別,這個符合OCP原則。註:OCP:Open-Closed Principle開閉原則。OCP關注的是靈活性,改動是通過增加代碼進行的,而不是改動現有的代碼。
Time of Update: 2018-12-05
在程式中,如果new了一個對象,那麼就應該負責對象的delete,但是如果這個對象是一個單例類的執行個體,那麼對象銷毀的時候就可能出現一些問題,例如Person是一個單例的類,但是同時有A,B,C三個人new了一個Person類的對象,那麼A,B,C三個人得到的是同一個執行個體對象,但是可能發生A在用完這個對象之後執行了delete操作,導致仍然在使用這個對象的B,C出現錯誤。
Time of Update: 2018-12-05
原子程式碼片段,Critical section 使用方法使用方法Example Code For Critical Sections with Win32 API/* Sample C/C++, Windows, link to kernel32.dll *///在windows平台下,調用了kernel32.dll的windows API函數#include <windows.h>static CRITICAL_SECTION cs;/* This is the
Time of Update: 2018-12-05
C語言中有些函數使用可變參數,比如常見的int printf( const char* format, ...),第一個參數format是固定的,其餘的參數的個數和類型都不固定。 C語言用va_start等宏來處理這些可變參數。這些宏看起來很複雜,其實原理挺簡單,就是根據參數入棧的特點從最靠近第一個可變參數的固定參數開始,依次擷取每個可變參數的地址。下面我們來分析這些宏。 在stdarg.h標頭檔中,針對不同平台有不同的宏定義,我們選取X86平台下的宏定義:typedef char *