Time of Update: 2017-01-19
複製代碼 代碼如下://shortest_path.c#include<stdio.h>#include<stdlib.h>//用file#include<string.h>//可用gets(),puts()#include"shortest_path.h"#define MAX 32767#define MENU "歡迎進入導航系統!\n==========菜單===========\n0、載入北外地圖\n1、建立地圖\n2、查詢最短路徑\n3、退出\n==
Time of Update: 2017-01-19
用數組名做函數參數與用數組元素作實參有幾點不同:(1)用數組元素作實參時,只要數群組類型和函數的形參變數的類型一致,那麼作為下標變數的數組元素的類型也和函數形參變數的類型是一致的。因此,並不要求函數的形參也是下標變數。換句話說,對數組元素的處理是按普通變數對待的。用數組名作函數參數時,則要求形參和相應的實參都必須是類型相同的數組,都必須有明確的數組說明。當形參和實參兩者類型不一致時,將會發生錯誤。(2)用普通變數或下標變數作函數參數時,形參變數和實參變數都是由編譯系統分配的兩個不同的記憶體單元。
Time of Update: 2017-01-19
C++增加參考型別,
Time of Update: 2017-01-19
複製代碼 代碼如下://Windows系統下可以用 time(),clock(),timeGetTime(),GetTickCount(),QueryPerformanceCounter()來對一段程式碼進行計時#include <stdio.h>#include <windows.h>#include
Time of Update: 2017-01-19
1.函數指標函數指標是一個指標,只是這個指標它不像普通的指標指向是是一個變數,此時它指向的是一個函數,也就是它儲存的是一個函數的地址,如果我們改變它的值,讓它所指向的地址由指向funA轉變為指向funB,那麼這個函數指標的作用就改變了。2.回呼函數什麼是回呼函數呢?回呼函數其實就是一個通過函數指標調用的函數!假如你把A函數的指標當作參數傳給B函數,然後在B函數中通過A函數傳進來的這個指標調用A函數,這就是回調機制。B函數就是回呼函數。3.函數指標的使用3.1函數指標聲明typedef 傳回型別(
Time of Update: 2017-01-19
複製代碼 代碼如下://一、 建構函式是幹什麼的/* 類對象被建立時,編譯系統對象分配記憶體空間,並自動調用該建構函式->由建構函式完成成員的初始化工作 eg: Counter c1; 編譯系統為對象c1的每個資料成員(m_value)分配記憶體空間,並調用建構函式Counter(
Time of Update: 2017-01-19
在函數體內定義了一個變數,每當程式運行到該語句時都會給該局部變數分配棧記憶體。但隨著程式退出函數體,系統就會收回棧記憶體,局部變數也相應失效。但有的時候我們需要在兩次調用之間對變數的值進行儲存。通常的想法是定義一個全域變數來實現。但是這樣一來,變數已經不再屬於函數本身了,不再僅受函數的控制,給程式的維護帶來不便。靜態局部變數正好可以解決這個問題。靜態局部變數儲存在全域資料區,而不是儲存在棧中,每次的值保持到下一次調用,直到下次賦新值。該變數在全域資料區內分配記憶體;靜態局部變數在程式執行到該對象
Time of Update: 2017-01-19
通常情況下,如果有兩個同名變數,一個是全域變數,另一個是局部變數,那麼局部變數在其範圍內具有較高的優先權,它將屏蔽全域變數。範圍運算子複製代碼 代碼如下:#include<iostream>using namespace std;int num=10;int main(){ int num; num=25; cout<<"num is
Time of Update: 2017-01-19
動態記憶體空間的申請示範利用C++的特性,能夠自訂空間的類型大小和空間長度下面這個程式是個數組動態配置的簡單樣本複製代碼 代碼如下:#include <iostream>using namespace std;int main(){ int size = 0; cout << "請輸入數組長度:"; //能夠自訂的動態申請空間長度 cin >>
Time of Update: 2017-01-19
c/c++從棧上擷取Lua壓棧過來的table資料複製代碼 代碼如下:map<string,string> traverse_table(lua_State *L, int index){ map<string,string> data; lua_pushnil(L); // 現在的棧:-1 => nil; index => table index = index -
Time of Update: 2017-01-19
稍微瞭解C程式設計的人都知道,文字檔和二進位檔案在電腦上面都是以0,1儲存的,那麼兩者怎麼還存在差別呢?對於編程人員來說,文字檔和二進位檔案就是一個聲明,指明了你應該以什麼方式(文本方式/二進位)開啟這個檔案,用什麼函數讀寫這個檔案(讀寫函數),怎麼判斷讀到這個檔案結尾等。具體分析如下:一、以哪種方式開啟一個檔案:ANSI C規定了標準輸入輸出函數庫,用 fopen()函數開啟檔案。fopen()函數的調用方式一般為:FILE
Time of Update: 2017-01-19
本文執行個體解析了C++判斷字串是否迴文的實現過程,通過資料結構中的相關例子,迴文判斷中採用過濾空白字元、有效字元依次入棧等方法實現該功能。具體執行個體代碼如下:#include <iostream>using namespace std;#define Max_String_Len 100#include "SqStack.h"//判斷字串是否迴文bool ispalindrome(char *in_string){ SqStack <char>
Time of Update: 2017-01-19
該執行個體是一個C實現的基於命令列模式連接埠掃描碼,並且是以非阻塞方式來實現對IP和連接埠的串連測試。為了大家使用和學習方便,已在代碼中儘可能多的地方加入了注釋,相信對於協助大家理解C連接埠掃描有很大協助。具體功能代碼如下:#include <afxext.h>#include <winsock.h>// 編譯時間需使用的庫#pragma comment(lib,"wsock32.lib")// select()成員定義#define ZERO (fd_set *)0//
Time of Update: 2017-01-19
本文所述執行個體代碼主要實現讀取給定路徑下的所有檔案夾名稱或所有帶尾碼的檔案名稱的功能。具體解決方案如下: 主要用到了以下幾個標頭檔(類):io.h, fstream, string。 首先,讀取某給定路徑下所有檔案夾與檔案名稱,並帶完整路徑。實現代碼如下: void getAllFiles( string path, vector<string>& files) { //檔案控制代碼 long hFile = 0; //檔案資訊
Time of Update: 2017-01-19
額,不要說我三心二意:一邊在看.NET和CLR的原理、一邊在看JavaScript、一邊在看Java;有時看演算法有時看Unity、Hibernate;有時看Hadoop有時看Redis;現在又開始看C++了。以前覺得無論什麼語言嘛,其實都差不多,核心思想基本一致。現在又不這麼想了,其實語言的選擇對軟體的效能、可靠性、開發成本之類的關係很大,所以覺得還是要多接觸一些比較核心的東西——那麼自然是C++了。以前在學校學的C++完全是醬油,太水了基本沒啥用,用來用去和C差不多,所以現在要自己學啦。廢話
Time of Update: 2017-01-19
C++可實現各種排序演算法類,比如直接插入排序、折半插入排序、Shell排序、歸併排序、簡單選擇排序、基數排序、對data數組中的元素進行希爾排序、冒泡排序、遞迴實現、堆排序、用數組實現的基數排序等。具體代碼如下:#ifndef SORT_H#define SORT_H#include <iostream>#include <queue>using namespace std;// 1.直接插入排序template<class ElemType>void
Time of Update: 2017-01-19
一、友元函數1.友元函數概述:(1)友元函數是定義在一個類外的普通函數。友元函數和普通函數的定義一樣;在類內必須將該普通函式宣告為友元。(2)友元函數不是成員函數。不能通過對象來調用,而是直接調用;友元函數可以訪問類的公有、受保護以及私人成員,但是必須通過對象、對象指標或者對象引用來訪問。2.友元函數的聲明:friend 傳回值類型 函數名(參數表);在類中只需要將這個聲明放置在公有部分即可。class Point{double x, y;public:Point(){x = 0.0; y =
Time of Update: 2017-01-19
1、在c++的Template中很多地方都用到了typename與class這兩個關鍵字,而且有時候二者可以替換,那麼是不是這兩個關鍵字完全一樣呢?事實上class用於定義類,在模板引入c++後,最初定義模板的方法為:template<class
Time of Update: 2017-01-19
在C++類中,有時候會使用到傳值調用(即使用對象實體做參數),當遇到這種情況,可要小心了!尤其是當你所傳值的對象生命週期較長,而非臨時對象(生命週期段)的時候。來看看下面的情況:#include <iostream>using namespace std;class Text{private:char * str;public:Text(){str = new char[20];::memset(str,0,20);}void SetText(char *
Time of Update: 2017-01-19
眾所周知的C++中空類的大小為1,但是除了空類之外的其他一些沒有成員變數的類的大小,還是有相當一部分開發人員對此有很多不明之處的。這裡我們以如下代碼為例:#includeusing namespace std;class a {};class b{};class c :public a{virtual void fun() = 0;};class d :public b, public c{};int main(){cout << "sizeof(a)" <<