Time of Update: 2018-12-06
一、單鏈表的建立 有了動態記憶體分配的基礎,要實現鏈表就不難了。 所謂鏈表,就是用一組任意的儲存單中繼存放區線性表元素的一種資料結構。鏈表又分為單鏈表、雙向鏈表和迴圈鏈表等。我們先講講單鏈表。所謂單鏈表,是指資料接點是單向排列的。一個單鏈表結點,其結構類型分為兩部分: 1、資料域:用來儲存本身資料 2、鏈域或稱為指標域:用來儲存下一個結點地址或者說指向其直接後繼的指標。 例: typedef struct node { char name[20]; struct
Time of Update: 2018-12-06
我這人就愛較真兒。今天八卦一下C#的建構函式:(一)先看一下參考型別的執行個體建構函式(ctor):測試一,無參ctor: 只要是程式員,都這麼寫過代碼。我們甚至可以省略B和A的無參ctor,但是,在CLR內部,會預設為B和A建立各自的預設無參ctor(啥事兒也不做),new B的時候,一級級從子孫向祖先往上冒,直到所有類的基類:Object的ctor。 當我們在Visual Studio中建立一個表單的時候,對下面的代碼是習以為常的:public partial class Form1 :
Time of Update: 2018-12-06
public static void Main(string[] args) { //Console.WriteLine("Hello World!"); Console.WriteLine(Execute("netstat -n -b",0)); Console.ReadKey(true); } public static
Time of Update: 2018-12-06
指標: 變數的地址。定義: int *p; 這裡是一個野指標,會報錯。因為它沒有指向 --int a=10;int *p=&a; 這裡就是對的。通過 p 來輸出一個十六進位的地址。 p將得到 0x-----(-為不確定)通過*p 來輸出 指標實際對應的值。 *p 將得到10 #include <stdio.h>void fun(int *m, int *n);int main(){ int a = 3, b = 5; printf ("a =%d; b = %
Time of Update: 2018-12-06
因為最近項目需要多檔案同時上傳所以自己在網上找了下方法。swfupload做到了,所以我把我的C#.net環境的多檔案同時上傳共用給大家!(本執行個體最大隻能上傳500M的資料,如需要上傳更大的下面會告訴大家如何設定)功能完全支援ie和firefox瀏覽器!一般的WEB方式檔案上傳只能一個一個的進行上傳,在某些應用上就顯得很不人性化,客戶們都希望能夠1次選擇很多檔案,然後讓系統把選擇的檔案全部上傳。這裡,就將針對這個問題提出一個比較完美的解決方案,利用的技術主要有2個:Flash和smartup
Time of Update: 2018-12-06
1 建立windows 服務項目2 注意載入timer的時候需要載入System.Timers.Timer this.timer1 = new System.Timers.Timer(); ((System.ComponentModel.ISupportInitialize)(this.timer1)).BeginInit(); // // timer1 // this.timer1.Interval = 5000;
Time of Update: 2018-12-06
簡單項目中可使用ini做為設定檔,操作類如下。 1 public class INIClass 2 { 3 public string inipath; 4 [System.Runtime.InteropServices.DllImport("kernel32")] 5 private static extern long WritePrivateProfileString(string section, string key,
Time of Update: 2018-12-06
1 判斷檔案夾是否存在 1 /// <summary>檔案夾是否存在 2 /// </summary> 3 /// <param name="dir"></param> 4 /// <returns></returns> 5 public static Boolean isFolderExist(string dir) 6 { 7 if
Time of Update: 2018-12-06
下載下面的base64.zip然後皆壓縮放到你的項目裡面。然後我們自己寫一個方法去調用即可,很簡單,我自己封裝了一個類去做,這樣對我來說,庫裡的函數就比較透明了,當然也不是必須的。在我當前機器上可以使用,如果有問題請聯絡我。 // .h檔案,預設即可 #import < Foundation / Foundation.h >@interface Utility : NSObject {}+ (NSString * )encodeBase64:(NSString * )input;+
Time of Update: 2018-12-06
實現使用者及使用者組使用權限設定,一個組內的使用者權限相同。 1//使用者和組的父介面 2public interface userbase 3{ 4 void AddChild(userbase u); //添加使用者或組 5 void SetPurview(string purview);//設定許可權 6} 7//使用者 8public class user : userbase 9{10 private string purview = "";1112 publi
Time of Update: 2018-12-06
這裡說的繼承有點像C++裡的父類和子類,實際上是結構體類型的強制轉換,最近看Linux核心源碼時經常接觸到這種方法,在這裡就當作是一個簡單的學習吧。 下面給出一個Demo,很簡單,分別定義了一個father結構體和一個son結構體,father結構體裡定義了2個整形變數,son結構體裡的第一個成員是father結構體類型的變數,son裡的另外2個成員也是整形變數,這樣,son結構體就好像繼承了father結構體,並增加了2個成員,代碼如下: 1 #include <
Time of Update: 2018-12-06
物件導向語言C++的基本特徵是封裝、繼承、多態,其實這些用C語言同樣可以實現。封裝可以用結構體來實現,繼承可以用包含來實現,這些都好說,下面我用代碼重點說一下如何用C語言實現C++的多態。 using namespace std;typedef struct Animal{ void (*show) ();}CAnimal;void showpig(){ cout<<__FUNCTION__<<endl;}void
Time of Update: 2018-12-06
函數的本質是一段二進位代碼,這些代碼是可以直接被機器執行的指令。在翻譯為組合語言時,函數被翻譯成一段相對獨立的代碼,並且使用函數名作為編號,表示此段代碼的入口。當程式調用該函數時,只需要轉到該入口就可以了。因此函數名的值等於記憶體中儲存該程式碼片段的首地址
Time of Update: 2018-12-06
多態性給我們帶來了好處:多態使得我們可以通過基類的引用或指標來指明一個對象(包含其衍生類別的對象),當調用函數時可以自動判斷調用的是哪個對象的函數。一個函數說明為虛函數,表明在繼承的類中重載這個函數時,當調用這個函數時應當查看以確定調用哪個對象的這個函數。普通函數的處理:一個特定的函數都會映射到特定的代碼,無論時編譯階段還是串連階段,編譯器都能計算出這個函數的地址,調用即可。虛函數的處理:被調用的函數不僅依據調用的特定函數,還依據調用的對象的種類。通常是由虛函數表(vtable)來實現的。虛函數
Time of Update: 2018-12-06
1,函數模板 函數模板即允許多個函數定義簡化成用統一的函數定義形式來描述。實際上,函數模板表示了一組同名函數,這些同名函數之間,都是重載函數。 函數模板定義的一般形式是: template <模板參數表> 函數類型標誌符
Time of Update: 2018-12-06
寫在前面: 以下內容是我的愚見,如有不對,歡迎拍磚。 無符號數:不存在正負之分,所有位都用來表示數的本身。有符號數:最高位用來表示數的正負,最高位為1則表示負數,最高位為0則表示正數。 1.無符號數--->有符號數 看無符號數的最高位是否為1,如果不為1(為0),則有符號數就直接等於無符號數;如果無符號數的最高位為1,則將無符號數取補碼,得到的數就是有符號數。以unsigned char 和char為例子:1.1將無符號數2轉為有符號數2的原碼是:0000 0010,
Time of Update: 2018-12-06
MailMessage mail = new MailMessage(); mail.To = "me@163.com"; mail.From = "you@163.com"; mail.Subject = "this is a test email."; mail.Body = "Some text goes here"; mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"
Time of Update: 2018-12-06
Prefer consts,enums,and inlines to #defines.我們學習C語言的時候,經常會用到前置處理器語句,比如#define,#include,#ifdef,#endif.預先處理語句是無法被編譯器看見的,所以無法得到有效錯誤提示.比如說: #define ASPECT_RATIO 1.653記號名稱ASPECT_RATIO有可能沒有進入記號表(symbol
Time of Update: 2018-12-06
1.將某些東西聲明為const可協助編譯器偵測出錯誤用法.const可被施加於任何範圍的對象,函數參數,函數傳回型別,成員函數本體.2.編譯器強制實施bitwise constness,但你編寫程式時應該使用"概念上的常量性"(conceptual constness);3.當const和non-const成員函數有著實質等價的實現時,令non-const版本調用const版本可避免代碼重複.
Time of Update: 2018-12-06
項目中要使用到初始化資料庫,需要用程式調用記錄下,2段代碼一段是調用方法一段是sql.sql檔案:private void SETUP() { DialogResult result; result = MessageBox.Show("安裝新資料庫將刪除原有資料庫,是否繼續安裝!", "警告", MessageBoxButtons.YesNo); if (result == DialogResult.Yes)