Time of Update: 2018-12-05
1、聯合體union 是聯合體,聯合體中可以包含1個到多個結構體, 這些結構體中大小最長的結構體決定聯合體的長度,對於聯合體中的任何一個成員賦值,會導致其他的成員被重設(因為記憶體共用的關係。)比如:union{int a;float b;struct{char c;int d;} st;}對該聯合體中的 a 進行賦值,會導致 b 和st 的值進行重設,這是因為,a、b、st 是共用的記憶體空間。 對st 中的 c 進行賦值同樣會導致
Time of Update: 2018-12-05
1、malloc、free 與 new 、delete的區別首先malloc、free 屬於C的一組庫函數,new delete 屬於C++的一組運算子。 功能都是開闢和釋放記憶體空間。 但是區別在於。new 和delete運算子 在開闢空間的時候會調用類的建構函式和解構函式。 而malloc free 則沒有這項功能。(C裡面也沒有類的概念)2、C++空類預設產生哪些類成員函數?編譯器自動產生4個函數,預設的 建構函式、解構函式、拷貝建構函式、賦值函數。3、C++中解構函式可以是內嵌函式 4、
Time of Update: 2018-12-05
1. 讀取檔案(StreamReader)添加引用:using System.IO;StreamReader objReader = new StreamReader(檔案路徑); string sLine=""; ArrayList LineList = new ArrayList(); while (sLine != null) { sLine = objReader.ReadLine(); if (sLine !=
Time of Update: 2018-12-05
區別:const的值是在編譯期間確定的,因此只能在聲明時通過常量運算式指定其值,比如:public const π=3.1415926;public const DayHours=24;像這些恒定不變的量,我們最好是用Const來聲明。static readonly是在運行時計算出其值的,所以還可以通過靜態建構函式來賦值。比如:public static string m_CurrentMdbPath;public static string
Time of Update: 2018-12-05
最近在做一個應用程式,涉及到兩個應用程式之間的通訊,就想到了用C#的具名管道的方式來實現,經過一番小折騰,總算實現了,現把一些主體的代碼粘貼出來與大家分享: 管道通訊會涉及到client端和Server端,Client端的主要代碼: 需要引用命名空間:using System.IO.Pipes;Thread pipeThread = new Thread(new
Time of Update: 2018-12-05
因為一道面試的題目,所以抓來了譚浩強的《C語言程式設計》翻了下,其中譚老師在240頁10.22例中,字元指標指向的字元,可通過像字元數組,使用[]來訪問,即: char * a = “I love china”;printf("The sixth charcter is %c\n",a[5]); 我便突發奇想,可否通過字元指標來改變其指向的內容,即VS2005的環境下,便會出 “0xC0000005: 寫入位置 0x00418bf0
Time of Update: 2018-12-05
具名管道的串連總結: 具名管道的串連有兩次阻塞的地方,一是在WaitForConnection()時[用戶端進行串連同理]會阻塞,二是在ReadString()[讀取管道資訊]時。 在伺服器端第一次建立具名管道後等待串連,當用戶端串連成功後伺服器端的具名管道就用作通訊用途。如果需要再次等待串連,伺服器端就需要再次開啟具名管道(建立一個具名管道的執行個體)並等待串連。
Time of Update: 2018-12-05
C++實現的委託機制(1)1.引言下面的委託實現使用的MyGUI裡面的委託實現,MyGUI是一款強大的GUI庫,想理解更多的MyGUI資訊,猛擊這裡http://mygui.info/ 最終的代碼可以在這裡下載:http://download.csdn.net/detail/gouki04/3641328 我們的目標是要實現一個跟.NET幾乎完全一樣的委託,使用簡單,支援多播,可以添加刪除委託。同時支援C++的普通函數、模板函數、類成員函數,類的靜態成員函數,並且支援多態。使用方式如下://
Time of Update: 2018-12-05
前段時間,在做objetive-c下的Sokcet通訊,當使用C++程式做服務端時,一切正常;當用JAVA做服務端時,雙方收不到資料,在查閱了一些資料後,整理一下注意點1 訊息末尾加斷行符號和分行符號 objetive-c發送資料時,要在末尾加上“\r\n”_dataToSend = [NSData dataWithBytes:"This is a test\n" length:15]; 這是因為JAVA服務端使用類似於readline()的函數,讀取緩衝區中的內容2
Time of Update: 2018-12-05
作為練習,自己編了一個: #include "stdafx.h"#include <iostream>#include <string>//#include <windows.h>using namespace std; int IPToValue(const string& strIP){//IP轉化為數值//沒有格式檢查//傳回值就是結果int a[4];string IP = strIP;string strTemp;size_t
Time of Update: 2018-12-05
其實就是兩個[]疊加起來,具體怎麼實現看代碼。#include <iostream>#include <string>using namespace std;template <class T> class arr;template <class T> class arrBody{ private: friend class arr<T>; T* data; int row,col,current_row;
Time of Update: 2018-12-05
轉自http://www.cppblog.com/bidepan2023/archive/2007/07/20/28419.aspx Q: 如何開啟一個應用程式? ShellExecute(this->m_hWnd,"open","calc.exe","","", SW_SHOW );或 ShellExecute(this->m_hWnd,"open","notepad.exe","c://MyLog.log","",SW_SHOW );正如您所看到的,我並沒有傳遞程式的完整路徑。Q
Time of Update: 2018-12-05
水平有限,請多指正! 裝飾者模式(Decorator)樣本 例子改編自《設計者模式解析(第二版)》214頁,人民郵電出版社 意圖:動態給一個對象添加職責;即提供了“隨插即用”方法,不用重新編譯已有部分。 問題:要使用的對象將執行所需的準系統。但是,可能需要為這個對像添加某些功能,這些附加的功能可能發生在對象的準系統之前或之後。解決方案:可以無需建立子類而擴充一個對象的功能 優點:類的階層大小和複雜度有了很大程度的降低
Time of Update: 2018-12-05
訪問者模式是一種分離對象資料結構與行為的方法,通過這種分離,可以為一個已存在的類或類群(即被訪問者)增加新的操作(即訪問者)而無需為它們作任何修改。訪問者模式屬於行為型模式。 為什麼要使用訪問者模式? 如何擴充一個現有的類階層來實現新行為?一般的方法是給類添加新的方法。但是萬一新行為和現有物件模型不相容怎麼辦?還有,類階層設計人員可能無法預知以後開發過程中將會需要哪些功能。以及,如果已有的類階層不允許修改代碼,怎麼能擴充行為呢?
Time of Update: 2018-12-05
在c#中,“[...]”這個叫做Attribute,一般翻譯為“特性”,而不是“屬性”(因為“屬性”已代表其他意思)特性是一個繼承自System.Attribute類的類,其實特性和注釋(即“/* ... */”)類似,是用於描述程式集、類型、成員的“備忘資訊”,和注釋不同的是:注釋是給“人”看的,而特性是給“編譯器”看的,舉例來說:[ServiceContract] 這個特性告訴編譯器,該類型(指IInterface1)是一個服務契約,[OperationContract]
Time of Update: 2018-12-05
如何寫出優美的C代碼:物件導向的C0推薦http://www.bbs.topsage.com/thread-426058-1-1.html物件導向的語言更接近人的思維方式,而且在很大程度上降低了代碼的複雜性,同時提高了代碼的可讀性和可維護性,傳統的 C 代碼同樣可以設計出比較易讀,易維護,複雜度較低的優美代碼,本文將通過一個實際的例子來說明這一點。基礎知識結構體除了提供基礎資料型別 (Elementary Data Type)外,C 語言還提供給使用者自己定製資料類型的能力,那就是結構體,在
Time of Update: 2018-12-05
#include <iostream>#include <assert.h>using namespace std;/*struct Node{ int info; Node *next;};struct queuelk{ struct Node *front; struct Node *back;};void init_queue(struct queuelk* q){ q->back = q->front = NULL;}void
Time of Update: 2018-12-05
踏入C++中的雷區——C++記憶體管理詳解 這篇文章回答了我之前的一個問題,就是分配記憶體用malloc好,還是用new好,今天跑程式的時候,發現malloc老是失敗,氣得不行,最後看到了這篇文章,原來如此,以後堅決用new了。。。。 1、有了malloc/free為什麼還要new/delete? malloc與free是C++/C語言的標準庫函數,new/delete是C++的運算子。它們都可用於申請動態記憶體和釋放記憶體。 對於非內部資料類型的對象而言,光用malo
Time of Update: 2018-12-05
被 internal 修飾的東西只能在本程式集(當前項目)內被使用。被 protected internal 修飾的屬性/方法 可以在其他項目中,被衍生類別使用例如有兩個項目app1和app2.app1是啟動項目,而app2隻是一個類庫 /*項目app2*/namespace app2{internal class cInternal //該類只能在app2中使用(整個類都internal,相當於所有的屬性也全都internal了){ public int
Time of Update: 2018-12-05
一個簡單的C/S多線程應用,稍微擴充就可以用了 /*socket是網路應用程式的核心,在伺服器端或用戶端網路應用程式中,socket皆為不可缺少的要素 *在伺服器常見的應用有:FTP伺服器,MAIL伺服器(SMTP,POP3,IMAP4協議),WEB(HTTP協議) *建立伺服器端SOCKET的應用程式步驟如下: *1。建立伺服器端的SOCKET,並且以此偵聽用戶端的串連請求 *2。當伺服器端偵測到來自用戶端的串連請求時則接收此請求並建立用戶端的SOCKET,該SOCEKT將作為 *