Time of Update: 2018-12-03
我們寫程式的時候,如果方便點兒的話,就直接定義局部變數,這樣雖然方便但是自由度不高,變數的生命週期由系統負責;有時我們想申請一塊指定大小的記憶體,並且由我們自己負責何時釋放這塊記憶體。這就要求我們要對堆(heap)和棧(stack)有所瞭解。下面的八部分是對網上一篇關於此話題的文章的整理,整理一下的目的是讓自己更好的理解這些知識點,並且將其格式規範一下也易於以後查閱。 (一)程式的記憶體配置(二)堆和棧的申請方式(三)申請後系統的響應(四)申請大小的限制(五)申請效率的比較(六)堆和棧中的儲存內
Time of Update: 2018-12-03
2011-04-14 wcdj 現在開始產生真正的3D對象,而不是像前兩節課中那樣3D世界中的2D對象。給三角形增加一個左側面,一個右側面,一個後側面來產生一個金字塔(四稜錐)。給正方形增加左、右、上、下及背面產生一個立方體。我們混合金字塔上的顏色,建立一個平滑著色的對象。給立方體的每一面則來個不同的顏色。注意:(1) 經常有人問:“我的對象怎麼不會繞著其自身的軸旋轉?看起來總是在滿屏亂轉。”要讓您的對象繞自身的軸旋轉,您必須讓對象的中心座標總是(0.0f, 0,0f, 0,0f)。(2)
Time of Update: 2018-12-03
今天是中秋節,是親人團聚的日子,雖然由於路途遙遠不能回家與父母團聚,但是通過電話依然可以傳達思念之情。祝福大家中秋節快樂!在網上看到一道軒轅科技的面試題(問題描述看下面的代碼),實現的方法很多,我的一種解決方案如下:(擴充了一點兒功能,輸出了其中一個Palindrome字串)/************************************************************************//* author: wcdj * date: 2009-10-3
Time of Update: 2018-12-03
2011-04-14 wcdj 在做個OpenGL的程式時,Debug版本下編譯成功,但是切換到Release版本編譯出現如下錯誤:1>------ 已啟動產生: 項目: OpenGLWin32GUI, 配置: Release Win32 ------1>正在編譯...1>OpenGLWin32GUI.cpp1>正在連結...1>OpenGLWin32GUI.obj : error LNK2001: 無法解析的外部符號
Time of Update: 2018-12-03
在寫C程式的時候,經常會用到串拷貝strcp這個庫函數,它的主要功能就是將一串字串常量拷貝到一個字串變數裡(而不是一個字串常量,必須要有儲存空間)。雖然這個函數的實現比較簡單,但是最基本的東西往往容易被人忽視。 c99標準參考:7.21.2.3 The strcpy functionSynopsis1 #include <string.h>char *strcpy(char * restrict s1,const char * restrict s2);Description2
Time of Update: 2018-12-03
2011-05-19 wcdj // Duff's Devicevoid send(char*to, char* from, int count){int n = (count+7)/8;switch(count%8){case 0:do{ *to++ = *from++;case 7: *to++ = *from++;case 6: *to++ = *from++;case 5: *to++ = *from++;case 4: *to++ = *from++;case 3: *to++ = *
Time of Update: 2018-12-03
2011-05-30 wcdj 下面是創新工廠的一道面試題,單詞的反轉,比如"I love this game" 反轉後為"game this love I" #include <cstdio>#include <cstring>#include <cctype>using namespace std;// 按字元反轉字串void reverse_char(char *str){int nlen = strlen(str);char tmp;for (int
Time of Update: 2018-12-03
【問題】計算a**b%c的值。其中,"**"代表冪(Python中就是這樣表示的);"%"代表模數運算。 【分析】首先由模運算的性質,可以得到下面的公式:(a*b) % c = (a%c) * b % c 【公式一】將【公式一】繼續展開,可得下面的公式:(a*b) % c = (a%c) * b % c = (b%c) * (a%c) % c = (a%c) * (b%c) % c
Time of Update: 2018-12-03
2011-11-16 wcdj 夜深人靜……一段測試代碼#include<iostream>using namespace std;const int iTotal = 2000;const int iMsgNum = 3;char szFsm[iTotal] = {0};int iFsmNo = 0;int iAdd = -1;// add factorint iIdx = 0;int iLoopCnt = 0;int Deal(){return iFsmNo;}int main(
Time of Update: 2018-12-03
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 classid="clsid:38481807-CA0E-42D2-BF39-B33AF135CC4D" id=ieooui>st1/:*{behavior:url(#ieooui) }--> /* Style Definitions */
Time of Update: 2018-12-03
ImageAttributes.SetColorKey Method( Color, Color, ColorAdjustType )Sets the Color key ( transparency range ) for a specified category. Namespace: System.Drawing.ImageingAssembly: System.Drawing ( in System.Drawing.dll ) Syntax:Public:void
Time of Update: 2018-12-03
2012-02-12 wcdj問題描述:一個骰子有6面,機率均勻,我有7件事要隨機均勻選擇,用最少的扔擲次數如何仍?問題擴充:如果我有4件事,5件事,8件事,9件事,10件事 …… n件事要選擇,那麼我如何用最少的扔擲次數來做到均勻分布?From: 問題來自這裡思路:注意問題中的關鍵字:(1) 最少扔擲的次數 (2)
Time of Update: 2018-12-03
消除鋸齒的方法很多,它們有各自不同的應用情況,不能一概而論,那樣往往得不到好的效果。 如何能較好的水除鋸齒,並且能很好的保持映像的細節,因為顧此失彼的話,這樣會把事情弄的更糟。 最近我看了不少的關於這方面的論文,其中的一篇,讓我覺得很是不錯,但是論文的內容寫的過於簡略,很多的細節沒有給出。在此我介紹一個它的大概的思想:首先通過分水嶺演算法得到映像的邊緣(Unsupervised watershed-driven region-based image
Time of Update: 2018-12-03
2011-06-03 wcdj (一) 按螢幕移動(二) 按文字區塊移動(三) 按搜尋移動(四) 按行號移動 (一) 按螢幕移動(1) 滾動螢幕“一屏”Ctrl + F 向前滾動一屏Ctrl + B 向後滾動一屏“半屏”Ctrl + D 向前滾動半屏(下)Ctrl + U 向後滾動半屏(上)“一行”Ctrl + E 向上滾動一行Ctrl + Y
Time of Update: 2018-12-03
Equalizer是優秀的opengl中介軟體;它是開源軟體,且允許商業使用。新手入門或瞭解的最好方式是運行一個簡單的程式,看一下效果,但對於裡面的概念一時不太容易理解。在此,我給出說明,你只需要按照步驟一步步,即可運行出兩個小例子首先是安裝windows下的安裝包一、單機 三個視窗1、設定檔使用已有設定檔,不需要做任何修改2、在安裝目錄的bin目錄下,建立檔案runserver.bat檔案內容eqServer.exe "c:\Program Files\Equalizer
Time of Update: 2018-12-03
2011-04-15 wcdj 在論壇上看到有人提出一個如下的問題,在此總結一下。原問題:http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41897.html #include <stdio.h>int main(){int ival1 = 123, ival2 = 1;char ch = 't';scanf("%d%d", &ival1, &ival2);scanf("%c", &
Time of Update: 2018-12-03
2011-06-09 wcdj (一) 啟動 vi 時的選項(二) 利用緩衝區(三) 標記自己的位置(一) 啟動 vi 時的選項(1) 前進到指定位置$ vi +n file 開啟檔案到第n行$ vi + file 開啟檔案到最後一行$ vi +/pattern file 開啟檔案到模式首次出現的位置注意:(1) 根據POSIX標準,vi 應該使用 -c
Time of Update: 2018-12-03
2012-04-15 wcdj1912.04.14 Titanic, 100 years later http://url.cn/3FYulc題目:兩個數組a[N],b[N],其中a[N]的各個元素值已知,現給b[i]賦值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i];要求:1. 不準用除法運算;2. 除了迴圈計數值,a[N],b[N]外,不準再用其他任何變數(包括局部變數,全域變數等);3. 滿足時間複雜度O(n),空間複雜度O(1);一種思路:通過分別拆分成[a[
Time of Update: 2018-12-03
2011-06-14 wcdj(一) ex 命令(二) 使用 ex 進行編輯(1) 行地址(2) 定義行的範圍(3) 行地址符(4) 搜尋模式(5) 重新定義當前行的位置(6) 全域搜尋(7) 組合 ex 命令(三) 儲存和退出檔案(1) 重新命名緩衝區(2) 儲存部分檔案(3) 添加到現有檔案中(四) 把檔案複製到另一個檔案中(五) 編輯多個檔案(1) 調用 vi 開啟多個檔案(2) 使用參數列表(3) 調用新檔案(4) 在 vi 中切換檔案 —— Ctrl - ^ 與 :e
Time of Update: 2018-12-03
2011-06-16 wcdj (一) 確認替換(二) 上下文相關替換(三) 模式比對規則(1) 元字元在搜尋模式中的使用(2) 一些模式比對例子全域替換真正使用的是兩個 ex 命令 —— :g(全域)和 :s(替換)替換命令的文法如下:(1): s/old/new/ 這將把當前行中模式 old 的第一次出現修改為 new/(斜杠)是命令不同部分之間的分隔字元(當斜杠為該行的最後一個字元時,它是可選的)。(2): s/old/new/g