Time of Update: 2018-12-05
近日在網上看到一產生分形圖形delphi程式,產生圖形非常漂亮,所以改成了c++,並提高了產生效率.代碼如下(原來的代碼使用複數運算,考慮到效率,去掉了,但仍然保留在注釋中)//此函數用來擷取顏色,s在[0,1]之間,且顏色是連續的COLORREF GetColor(double s){ int r,g,b; if(s<=0.25) { g=int(255*s/0.25); return RGB(0,g,255); } else
Time of Update: 2018-12-05
一、一個錯誤出現的例子#include <iostream>using namespace std;int main(){ int *p = new int; *p = 9; cout<<"將9賦給p所指向的記憶體位址後,指標p讀取的值是:"<<*p<<endl; delete p; cout<<"刪除p指標所指向的記憶體地區後,指標p所讀取的值:"<<*p<<endl; long *p1 = new long;
Time of Update: 2018-12-05
結構體就是一個可以包含不同資料類型的一個結構,它是一種可以自己定義的資料類型,它的特點和數組主要有兩點不同,首先結構體可以在一個結構中聲明不同的資料類型,第二相同結構的結構體變數是可以相互賦值的,而數組是做不到的,因為數組是單一資料類型的資料集合,它本身不是資料類型(而結構體是),數組名稱是常量指標,所以不可以做為左值進行運算,所以數組之間就不能通過數組名稱相互複製了,即使資料類型和數組大小完全相同。定義結構體使用struct修飾符,例如: struct test {
Time of Update: 2018-12-05
C++中Char類型類似於Delphi中Byte類型 只不過Char可以代表字元也可以代表認證,在C++中char是整數類型的一種形式。而Delphi中的Byte只能代表0-255的數字。Char既可以是有符號整形,也可是無符號整形,取決於編譯器設定。C++只有一種函數 函數既可以有傳回值,也可以無傳回值。傳回值型別宣告在函數名的前面。Delphi有兩種函數 分別為無傳回型別procedure 和有傳回值類型function,有傳回值的傳回型別聲明在函數名的最後。
Time of Update: 2018-12-05
1.引言 C++語言的建立初衷是"a better C",但是這並不意味著C++中類似C語言的全域變數和函數所採用的編譯和串連方式與C語言完全相同。作為一種欲與C相容的語言,C++保留了一部分過程式語言的特點(被世人稱為"不徹底地物件導向"),因而它可以定義不屬於任何類的全域變數和函數。但是C++畢竟是一種物件導向的程式設計語言,為了支援函數的重載,C++對全域函數的處理方式與C有明顯的不同。2.從標準標頭檔說起 某企業曾經給出如下的一道面試題:為什麼標準標頭檔都有類似以下的結構?
Time of Update: 2018-12-05
轉至:http://blog.chinaunix.net/space.php?uid=26495963&do=blog&id=3062636任何代碼的美麗不僅在於找到一個給定的問題的解決方案,但在它的簡單性,有效性,緊湊性和效率(記憶體)。設計的代碼比實際執行更難 。因此,每一個程式員當用C語言開發時,都應該保持這些基本的東西在頭腦中。 本文向你介紹規範你的C代碼的10種方法。1. 避免不必要的函數調用考慮下面的2個函數:void str_print( char *str ){
Time of Update: 2018-12-05
對象:記憶體中具有類型的地區初始化不是賦值內建類型變數的初始化:函數體外定義的變數都初始化成0,函數體內定義的內建類型變數不進行初始化聲明:向程式表明變數的類型和名字 extern定義:為變數分配儲存空間引用:對象的另一個名字 “&”const引用:指向const對象的引用。非const引用只能綁定到與該引用同類型的對象。
Time of Update: 2018-12-05
// 初始化aio。根據設定檔建立aio磁碟io線程voidsquidaio_init(void){ int i; int done_pipe[2]; squidaio_thread_t *threadp; if (squidaio_initialised) return; pthread_attr_init(&globattr);#if HAVE_PTHREAD_ATTR_SETSCOPE pthread_attr_setscope(&
Time of Update: 2018-12-05
從網上找了這篇文檔,做這個的時候感覺並不是特困難,感覺非常的新奇,畢竟自己做c語言的項目特別少.現在把這篇文章轉載過來,加了自己的一些注意項。JNI提示點滴 本文為在 32 位 Windows 平台上實現 Java 本地方法提供了實用的樣本、步驟和準則。本文中的樣本使用 Sun Microsystems 公司建立的 Java Development Kit (JDK) 版本 1.4.1。用 C 語言編寫的本地代碼是用 Microsoft Visual C++ 6.0編譯器編譯產生。 簡介
Time of Update: 2018-12-05
1 類、對象和記憶體1.1 通過記憶體看對象我們先回顧一下類和對象的定義,類是定義同一類所有執行個體變數和方法的藍圖或原型;對象是類的執行個體化。從記憶體的角度可以對這兩個定義這樣理解,類刻畫了執行個體的記憶體布局,確定執行個體中每個資料成員在一塊連續記憶體中的位置、大小以及對記憶體的解讀方式;對象就是系統根據類刻畫的記憶體布局去分配的記憶體。除了執行個體變數和方法,類也可以定義類變數和類方法,這是我們通常所說的靜態變數和靜態函數,它們不屬於某個具體的對象,而是屬
Time of Update: 2018-12-05
1:當無法列出傳遞函數的所有實參的類型和數目時,可用省略符號指定參數表void foo(...);void foo(parm_list,...);2:函數參數的傳遞原理函數參數是以資料結構:棧的形式存取,從右至左入棧.eg:#include <iostream> void fun(int a, ...) { int *temp = &a; temp++; for (int i = 0; i < a; ++i) { cout << *temp <<
Time of Update: 2018-12-05
(1)編譯產生執行檔案# gcc -g tst.c -o tst 注意 -g 選項不可沒有,否則gdb的l命令不能列出源檔案內容(2)啟動GDBgdb ./tst 若想一邊調式,程式碼可以同步顯示,則執行 gdb -tui ./test (建議這樣調試)(3)gdb常用命令(gdb) help <------------- 協助(gdb) help running <-------- 顯示running類別下的命令(gdb) l <-------------------
Time of Update: 2018-12-05
使用斷言12.用MFC時選擇ASSERT宏13.不要使用VERIFY宏,使用斷言宏14.在使用CObject衍生類別的對象之前都要調用ASSERT_VALID宏15.總是在調用ASSERT_KINDOF宏之前調用ASSERT_VALID宏16.移植代碼的時候也移植斷言17.要想有效利用斷言需要一定的策略,不要隨意的把斷言分布到你的代碼裡面,而是遵從某些已經建立起來的模式18."Assert the
Time of Update: 2018-12-05
使用跟蹤語句31.OutputDebugString API函數,MFC AfxOutputDebugString 宏和MFC AfxDumpStack
Time of Update: 2018-12-05
使用異常和傳回值1.使用傳回值處理錯誤需要程式員嚴格的編程作風,程式員不論是否有這種習慣,這都是非常不希望的。2.正確的異常處理是C++中的一個常識。異常通過發出錯誤訊號,可以讓程式碼和錯誤處理代碼分開,而且不會讓程式忽略錯誤。3.必須瞭解使用了哪種錯誤處理方法,傳回值還是拋出異常。如果不知道,那麼你的程式肯定有問題。4.異常是基於每個線程而提出並處理的;異常不能被線程忽略,必須被處理;未處理的異常會使進程結束,而不僅僅是線程結束;異常處理在釋放棧時會釋放所有的棧對象,因此避免了資源的漏洞;異常
Time of Update: 2018-12-05
hello.c: 功能實現------------------------------------------------------------ #include<stdio.h>#ifdef PGI //編譯時間使用 -DPGI 選項定義宏 PGIvoid hello_(int *num, char *name) //fortran中調用,注意參數要使用指標.
Time of Update: 2018-12-05
64位機器;用逸出序列給變數賦值,出現一些奇怪的問題,將自己的理解記錄下來原始碼如下:/* datatype.cpp */#include<iostream.h>int main(){ unsigned short ushort_Num; short short_Num; unsigned short ulong_Num; long long_Num; unsigned int uint_Num; int int_Num; char char_var;
Time of Update: 2018-12-05
程式在VC 6.0下編譯正常運行,在gcc下編譯出現“段錯誤”,最後發現時迴圈內部定義大型變數所致,我在一個我while迴圈中定義了一些變數,例如:while(){ char a[50]; char b[50]; char c[20]; memset(a,0,50*sizeof(char)); memset(b,0,50*sizeof(char)); memset(c,0,20*sizeof(char));
Time of Update: 2018-12-05
一、工具的使用
Time of Update: 2018-12-05
__inline void IRQEnable(void){ int tmp; __asm { MRS tmp,CPSR ///讀取CPSR的值 BIC tmp,tmp,#0x80 //將IRQ中斷禁止位I清零,即允許IRQ中斷 MSR CPSR_c,tmp //設定CPSR的值 }}__inline void IRQDisable(void){ int tmp; __asm