Time of Update: 2018-12-03
C語言編譯全過程 編譯的概念:編譯器讀取來源程式(字元流),對之進行詞法和文法的分析,將進階語言指令轉換為功能等效的彙編代碼,再由組譯工具轉換為機器語言,並且按照作業系統對可執行檔格式的要求連結產生可執行程式。 編譯的完整過程:C來源程式-->先行編譯處理(.c)-->編譯、最佳化程式(.s、.asm)-->組譯工具(.obj、.o、.a、.ko)-->連結程式(.exe、.elf、.axf等)1. 編譯預先處理
Time of Update: 2018-12-03
父視窗:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace mail...{ public partial class Form1: Form ...{ private
Time of Update: 2018-12-03
Hello World1.建立一個WinForm項目,項目->增加新項->選擇Crystal 報表2.使用報表精靈->建立新串連->資料庫檔案->選擇一個Access資料庫db.mdb3.選中一個表:Article添加到選定的表中,下一步4.選擇可用欄位添加到要顯示的欄位中。不點下一步,直接點完成。5.這樣就建立了一個報表檔案,為報表做一些美化。
Time of Update: 2018-12-03
雖然Revit的使用者和開發目前在中國都很少,但是這是個趨勢。未來Revit會在許多方面取代Autocad做CAD二次開發的,在中國也很吃香。但是使用C++難倒了許多人。而Revit二次開發可以使用C#並且上手非常容易。假如你是一個C#程式員,正在確定自己未來的方向,不妨考慮做個Revit二次開發人員。這是我剛剛建立的Revit二次開發論壇http://revit.5d6d.com目前國內還沒有成熟的Revit二次開發產品,我們共同努力吧。
Time of Update: 2018-12-03
這個問題應該是我以前在CSDN蹭分時回答次數比較多的一個問題了,我的回答一般是三種方法:(1)用vector的vector,(2)先分配一個指標 數組,然後讓裡面每一個指標再指向一個數組,這個做法的好處是訪問數組元素時比較直觀,可以用a[x][y]這樣的寫法,缺點是它相當於C#中的一個鋸齒 數組,記憶體空間不連續。(3)直接分配一個x*y大小的一維數組,這樣保證空間是連續的,但訪問數組元素不直觀。對於我這個“經典”回答,我那時還一直是 挺得意的,至少從蹭分的角度來看,這樣回答還是很有效。
Time of Update: 2018-12-03
最近一段時間總是用C和WEBSERVICE進行一些資料的互動,所以不得不用XML這些東西,用C寫死剖析器總是不太好,稍做更改就是改程式,太麻煩。 所以,在用這些之前,自已寫了點XML的解析小測試,感覺不是很難,拿出來和大家分享,如果您是高手,請不要見笑,如果您從中學到了點東西,那我非常高興,不妥之處警請指正: #include <libxml/xmlreader.h>#include <stdio.h>#include <string.h>#include
Time of Update: 2018-12-03
在我的那篇“C++中虛解構函式的作用”中我說明了為什麼作為基類的類的解構函式必須是虛函數,同時也指出:為了避免產生虛函數表,如果類不是基類的話,解構函式就不需要聲明為虛函數。 但是,我們不能預料使用者的行為,你不敢肯定使用者是否會從你的類去派生自己的類。如果使用者以一個基類指標去刪除一個衍生類別的對象,就會發生衍生類別的解構函式不被調用的情況。這樣做的危險性我想大家都知道。當然,你可以在類的說明文檔中,甚至是在類的標頭檔中,說明你寫的類不能作為基類。可是,誰又能保證,使用者會仔細閱讀這些
Time of Update: 2018-12-03
第1章 致讀者[1] 在編寫程式時,你是在為你針對某個問題的解決方案中的思想建立起一種具體表示。讓程式的結構儘可能地直接反映這些思想: [a] 如果你能把“它”看成一個獨立的概念,就把它做成一個類。 [b] 如果你能把“它”看成一個獨立地實體,就把它做成某個類的一個對象。 [c] 如果兩個類有共同的介面,將此介面做成一個抽象類別。 [d] 如果兩個類的實現有某些顯著的共同東西,靜這些共性做成一個基類。 [e] 如果一個類是一種對象的容器,將它做成一個模板。
Time of Update: 2018-12-03
如何用C++編程獲得某台機器的IP地址?編譯:Northtibet下載原始碼 對於這個古老的問題,VC知識庫的精華區以及以往的線上雜誌中都有詳盡不一的描述。本文提供的方法是一個比較完整的解決方案,並附有詳細的實現細節。希望大家對這個問題有徹底的認識。其實,如果你熟悉 Windows 的Sockets
Time of Update: 2018-12-03
1 std::string不能和""直接比較(都會false),只能用getlength() == 0來比較其在結構中時候佔4×4個位元組,其中,第二個4位元組是buffer指標,第三個4位元組是長度2 push 結構等類型進stl容器時,必須使用拷貝建構函式(預設拷貝建構函式是位拷貝),否則會有2558等編譯錯誤java c#把所有對象放在堆上,c++不是3 無符號數的相減不會出現負數4 0x2 & 0x2 == 0x2這種前面是必須加括弧的(優先順序的問題)5
Time of Update: 2018-12-03
C++ new用法的正確方法應該如何操作?在這篇文章中我們將會根據其兩種不同的含義分別介紹一下它的影音方法,希望能給大家帶來一些協助。C++程式設計語言中有一種叫做new的術語。不過這一概念是比較模糊的,有些人把它理解為new函數,但是有的人又會把它理解為new運算子。那麼它的真正含義又是如何的呢?在這裡我們將會通過對C++ new用法的介紹,協助大家一起分析一下。 C++ new用法之一 new運算子最常用的是作為運算子的new,比如:string *str = new
Time of Update: 2018-12-03
#include <string>#include <algorithm>#include <functional>using namespace std;inline string& LeftTrim(string &str){ string::iterator iter=find_if(str.begin(),str.end(),not1(ptr_fun<int>(::isspace)));
Time of Update: 2018-12-03
(1) Java有記憶體回收機制,當然也就沒有C++的解構函式。但是,可控制性和C++相比就差了一點,而且也不是說有了記憶體回收,就不會產生記憶體流失。由於相互引用等原因可能造成對象的生存周期過長,記憶體回收失效。對象記憶體的回收,個人認為應該是由程式員來掌握的事情。C++可以用auto_ptr,shared_ptr等智能指標來完成自動析構,當然前提是你要熟悉他們的實現機制和應用場合(2) Java中所有的對象都是分配在堆上,在Java中只有控制代碼,也就是引用,沒有指標。
Time of Update: 2018-12-03
(1) vtable的影響 導致一個對象執行個體增大4個位元組 #include <cstdlib> #include <iostream> using namespace std; class A { int a; }; class B { virtual void say() { } int b; }; int main(int argc, char *argv[]) {
Time of Update: 2018-12-03
舞伴問題描述如下:就是說有個PARTY舞會需要進行跳舞,當然是男的跟女的搭檔了。就是男的一個隊列,女的一個隊列,然後互相出隊列,進行匹配跳舞,如果男的隊列跟女的隊列人一樣多,則輸出 匹配完美結束,若最後男的剩下或者女的剩下,此時輸出剩下的隊列中第一個人的名字,比如I,則輸出
Time of Update: 2018-12-03
C++匯出模板類今天使用__declspec(dllexport)匯出dll中的模板類,dll倒是編譯通過了,不過連結的時候出錯,無法解析的外部符號,汗到網上查了下,說是模板類無法匯出然後我去掉了__declspec(dllexport),發現竟然編輯通過了,也就是不用匯出聲明就可以在dll外部使用模板類了測試了一下,這樣使用沒有出錯,正常使用奇怪了,為什麼呢?另:C++模板類必須是實現和定義都放標頭檔中,否則會出現連結錯誤
Time of Update: 2018-12-03
最近在看JAVA,因為JAVA是運行期綁定,所以裡面提到了一個有趣的問題,就是在建構函式裡面運行虛函數的問題。 建構函式裡可以運行虛函數嗎?我們先不討論實際項目中是否有這個必要(至少我還沒碰到過,也許即便碰到了也有其他的解決辦法。),單就建構函式裡調用虛擬函數的情況來做些分析。 在JAVA中,如果在建構函式中調用虛擬函數的話,是可以編譯通過的,也不會出現運行期錯誤,但他的運行結果也許不是你想要的。在JAVA當中,由於是運行期綁定,而建構函式執行的虛擬函數將是衍生類中的函數(假如衍生類對該虛擬函數
Time of Update: 2018-12-03
平常做程式的時候我們經常會遇到這樣的情況,本來直接輸入的是這樣的資料,然而在讀取輸出的時候卻不是我們輸入時的資料。這是為什麼呢? 原因就是我們在輸入的時候留下了垃圾,而我們定義的某個變數接受的資料正是“垃圾”而不是我們想要的資料。沒事總結一下C、C++中清除垃圾的方法(花了我一上午的時間啊,不過感覺很有必要):C語言中緩衝區的重新整理:(清除輸入時的垃圾)1.fflush(stdin) 標頭檔: include<stdio.h>
Time of Update: 2018-12-03
和大多數朋友一樣,我頭一遭遇到cout是在生平第一個看到C++程式——經典的“Hello, World!”中,作為我如今最擅長編寫的程式之一(^_^),它大概是這樣子的:#include <iostream>using namespace std;int main(){ cout << "Hello, World!" << endl; return 0;}
Time of Update: 2018-12-03
今天在一個網站上看到有個冒泡排序演算法,最後的輸出prinf輸出函數如:printf("%c",a[i],a[i]); 突然記得在什麼地方看過一種說法,C語言的輸出是從右至左的,但具體卻很模糊,下班回來之後就試了一下,代碼如下:#include <stdio.h>int main(){ int b = 4;printf("%d,%d",++b,b++);printf("\n");printf("%d",b);printf("\n");int a[3] = {1,2,