Time of Update: 2018-07-30
主要是解析Linux kernel中一些C語言知識點的妙用 在X86系統中,預設情況下系統是4位元組對齊,比如以下結構,在輸出的時候是8個位元組長度,而不是5個,因為編譯器會進行對齊, 所以也不要單純的認為結構體的大小是所有元素的之和。 struct Test_data{int b;char a;}; 在對於一些嵌入式系統,對於記憶體空間比較珍惜的系統中,往往可能不需要系統的對其,c語言提供了一種機制來解決這種在struct裡填充位元組來滿足對齊要求。這種機制就是
Time of Update: 2018-07-30
嘗試著在C#下調用以前Delphi寫的一些DLL,基本實現動態調用,傳入回呼函數,及調用帶結構數組指標作為參數的函數. 雖然DllImport可以方便的靜態調用DLL的函數,但在.net2.0中新增加了一個Marshal.GetDelegateForFunctionPointer 方法,可以將非託管函數指標轉換為委託。
Time of Update: 2018-07-30
#include <iostream> #include <vector> using namespace std; template <class K, class V>
Time of Update: 2018-07-30
功 能: 將s所指向的某一塊記憶體中的每個位元組的內容全部設定為ch指定的ASCII值, 塊的大小由第三個參數指定,這個函數通常為新申請的記憶體做初始化工作 用 法: void *memset(void *s, char ch, unsigned n); 程式例: #include <string.h> #include <stdio.h> #include <memory.h>
Time of Update: 2018-07-30
#include <stdio.h>#include <stdlib.h>#include <string.h>#define SIZE 1024*1024*10int main(){FILE *fp_read, *fp_write;fp_read = fopen("E:\\CentOS-6.5\\CentOS-6.5-i386-bin-DVD1.iso","rb");fp_write = fopen("D:\
Time of Update: 2018-07-30
__getattr__(self, name) 定義當使用者試圖擷取一個不存在的屬性時的行為 : 當訪問對象的時name屬性時,若name屬性不存在,會自動調用__getattr__。如果存在,則不會調用__getattr__方法,而是直接返回name屬性 __getatribute__(self, name) 定義當該類的屬性被訪問時的行為 當訪問對象的name屬性時,無論name存不存在都會調用該方法 __setattr__(self,
Time of Update: 2018-07-30
Dictionary( TKey , TValue ) 表示鍵和值的集合。 Dictionary( TKey, TValue) 泛型類提供了從一組鍵到一組值的映射。字典中的每個添加項都由一個值及其相關聯的鍵組成。通過鍵來檢索值的速度是非常快的,接近於 O(1),這是因為 Dictionary( TKey, TValue) 類是作為一個雜湊表來實現的。(檢索速度取決於為 TKey 指定的類型的雜湊演算法的品質。)
Time of Update: 2018-07-30
《c專家編程》中的一個程式,可以將聲明翻譯為通俗語言,主要運用棧,挺難的,我自己是寫不出的,照著書敲了一遍。 普通方法: #include<stdio.h>#include<string.h>#include<ctype.h>#include<stdlib.h>#define MAXTOKENS 100#define MAXTOKENLEN 64enum type_tag
Time of Update: 2018-07-30
using System;using System.IO.MemoryMappedFiles;using System.Text;namespace MappedMemoryFiles{ class Program { static void Main(string[] args) { using (var mmFile =
Time of Update: 2018-07-30
以前做Winform程式,居然專門做一個介面來配置連接字串。今天無意中發現:竟然可以直接調用VS.net2005中的配置介面來處理。 使用方法也及其簡便: 一、添加引用 C:/Program Files/Microsoft Visual Studio 8/Common7/IDE/Microsoft.Data.ConnectionUI.Dialog.dll 二、引入名稱空間 using Microsoft.Data.ConnectionUI;
Time of Update: 2018-07-30
一般如果邏輯比較簡單,只是存在有的情況多一個查詢條件,有的情況不需要添加該查詢條件 簡單方式這樣操作就可以了 public IQueryable<FileImport> DynamicChainedSyntax(IQueryable<FileImport> files, bool pastOnly){var query = files.Where(file => file.ImportDate >DateTime.Now.AddDays(-7))
Time of Update: 2018-07-30
之前部落格講了一些關於std::find和std::find_ if的一些用法,但是沒有講述對於vector中儲存的是自訂的類,那麼怎麼樣使用std::find和std::find_if進行尋找呢。 先定義一個類: class Item{private: std::string m_ItemId; int m_Price; int m_Count;public: Item(std::string id, int price, int count):
Time of Update: 2018-07-30
C++安全函數之strcpy_s 1. 必須包含的標頭檔:<string.h> 2. 函式宣告: errno_t strcat_s( char *strDestination, size_t numberOfElements, const char *strSource ); 3. 參數介紹
Time of Update: 2018-07-30
C++檔案操作詳解 C++ 通過以下幾個類支援檔案的輸入輸出: ofstream: 寫操作(輸出)的檔案類 (由ostream引申而來) ifstream: 讀操作(輸入)的檔案類(由istream引申而來) fstream: 可同時讀寫操作的檔案類 (由iostream引申而來) 開啟檔案(Open a file)
Time of Update: 2018-07-30
每個衍生類別對象由衍生類別中定義的(非static)成員加上一個或多個基類子物件構成,因此,當構造、複製、賦值和撤銷衍生類別型對象時,也會構造、複製、賦值和撤銷這些基類子物件。 建構函式和複製控製成員不能繼承,每個類定義自己的建構函式和複製控製成員。像任何類一樣,如果類不定義自己的預設建構函式和複製控製成員,就將使用合成版本。 1:建構函式和繼承
Time of Update: 2018-07-30
大二上學期,曾寫過這樣的一段代碼 #include<stdio.h>#include<stdlib.h>#include<string.h>int main(){ char *ptr1 = "hello string"; char *ptr2 = (char*)malloc(strlen(ptr1)-2); strcpy(ptr2,ptr1); while(
Time of Update: 2018-07-30
矩陣乘法滿足結合律,所以哪裡加括弧不影響最終結果,括弧加在不同的地方會對運算代價產生巨大影響,因此在進行矩陣鏈乘法時需要考慮那些矩陣先相乘以減少運算代價。下面使用動態規劃方法實現矩陣鏈乘法 虛擬碼 c++實現代碼 #include <iostream>#define N 7using namespace std;void matrixChainOrder(int p[],int length,int m[][N],int s[][N]){
Time of Update: 2018-07-30
一、回呼函數 在看LWIP時,見到用回呼函數,再看某老外公司OPC原始碼時,見到用回呼函數。看我國內某些代碼(我公司軟體等)時沒用到。於是,我對回呼函數產生了很大的好奇。以前,我寫VC程式時用到過回呼函數,但是沒有用C語言來使用。最近,看到國外大量的經典代碼中廣泛使用了回呼函數(LWIP、某兩個公司的OPC程式等),都是C語言來實現的,而不是VC windows程式中別人實現自己使用的那種。 為了弄明白這種函數的奧妙,首先提出三個問題:
Time of Update: 2018-07-30
求累加和最大的最長子數組 問題:給定一個數組,返回子數組的最大累加和 採用暴力求解 時間複雜度0(N*N*N) #include <iostream>using namespace std;/*子數組求最大累加和:返回最大值*/int arrayLocSum(int a[], int length){ if (!a || length <= 0) return -1; int sum = a[0]; int max = sum;
Time of Update: 2018-07-30
一、最大公約數與最小公倍數 最大公約數,屬於數論所探究的內容。 最大公約數可以通過下面的三種方法求出來。 最小公倍數呢,它與最大公約數的乘機為所求數之積。 比如求 x,y的最大公約數和最小公倍數 記住這個公式: x*y=最小公倍數*最大公約數 二、求最大公約數的三種方法 ①輾轉相除法 演算法流程圖 代碼塊: int measure(int x, int y){int z = y;while(x%y!=0){z =