Time of Update: 2017-01-19
mkdir函數用於建立目錄。格式如下:#include<sys/types.h>#include<sys/stat.h>#include<unistd.h>int mkdir(const char *pathname,mode_t
Time of Update: 2017-01-19
複製代碼 代碼如下:#include <stdio.h>#include <stdlib.h>typedef struct type{ int num; struct type *next;}TYPE;//=============================================================// 文法格式: TYPE *init_link_head(int n)// 實現功能:
Time of Update: 2017-01-19
下面是三個變數的聲明,我想使用typedef分別給它們定義一個別名,請問該如何做?>1:int *(*a[5])(int, char*);>2:void (*b[10]) (void (*)());>3. doube(*)() (*pa)[9];答案與分析:對複雜變數建立一個類型別名的方法很簡單,你只要在傳統的變數聲明運算式裡用類型名替代變數名,然後把關鍵字typedef加在該語句的開頭就行了。>1:int *(*a[5])(int,
Time of Update: 2017-01-19
一
Time of Update: 2017-01-19
我們都知道C++中有三種建立對象的方法,如下:複製代碼 代碼如下:#include <iostream>using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int
Time of Update: 2017-01-19
問題:break在for迴圈、while迴圈等迴圈流程式控制制中起的作用是停止執行break後面的語句,跳出本次迴圈,並跳出該迴圈控制體;在switch條件選擇中,沒有了迴圈控制,break又起什麼作用呢?解決辦法:1.
Time of Update: 2017-01-19
問題:從c++檔案中將std:string轉換為char*後,返回包含IP地址的char*,需要將該字串char*中的IP地址提取出來;解決辦法:1. 解決思路:IP地址最長為12字元+3句點=15字元,一般性表示為192.168.111.111;可以從第一個字元開始解析,當不是'.'時,將所有字元儲存下來,然後把所有儲存下來的字元轉換為16進位就可以了;2. 程式如下:複製代碼 代碼如下:typedef struct { char addr_ipv4[4];
Time of Update: 2017-01-19
C語言運算子及其優先順序匯總表口訣圓下箭頭一頓號非凡增減富強針地長三乘除,四加減,五移位千萬別把魚忘記,它在盛飯的廚子裡小燈大燈燈燈不等爸餵魚,舅疑惑,裸雞也疑惑十三姨,十四父,十五逗,兜到低“圓下箭頭一頓號”指的是第15級的運算子。其中圓指的是運算子(),下指的是下標運算子[],箭頭指的是指向結構體成員運算子->,頓號指的是結構體成員運算子、 “非凡增減富強針地長”指的是第14級的運算子。其中非指的是邏輯運算子!,凡指的是按位取反運算子~,增減指的是自增和自減運算子++和--,
Time of Update: 2017-01-19
一、程式結構的最佳化1、程式的書寫結構雖然書寫格式並不會影響產生的程式碼品質,但是在實際編寫程式時還是應該尊循一定的書寫規則,一個書寫清晰、明了的程式,有利於以後的維護。在書寫程式時,特別是對於While、for、do…while、if…elst、switch…case等語句或這些語句嵌套組合時,應採用“縮格”的書寫形式,2、標識符程式中使用的使用者識別碼除要遵循標識符的命名規則以外,一般不要用代數符號(如a、b、x1、y1)作為變數名,應選取具有相關含義的英文單詞(或縮寫)或漢語拼音作為標識符
Time of Update: 2017-01-19
下面是一個C語言的函數和C++的函數驗證了這段話複製代碼 代碼如下:# include<stdio.h>int fun1();int main(){ int a = fun1(3, 4); printf("%d\n", a); return 0;}int fun1(int a, int b){ return a + b;}結果沒有任何問題,輸出結果為7,也即fun()可以聲明fun(int, int)複製代碼 代碼如下:#
Time of Update: 2017-01-19
用下面公式求π的近似值。π/4≈1-1/3+1/5-1/7+…直到最後一項的絕對值小於10-7為止。根據給定的演算法很容易編寫程式如下:#include <iostream>#include <iomanip>#include <cmath>using namespace std;int main( ){ int s=1; double n=1,t=1,pi=0; while((fabs(t))>1e-7) { pi=pi+t; n=
Time of Update: 2017-01-19
我們先來看個例子char * strcpy(char * strDest,const char * strSrc) { if ((NULL==strDest) || (NULL==strSrc)) throw "Invalid argument(s)"; char * strDestCopy = strDest; while ((*strDestCopy++ = *strSrc++) != '\0'); return strDest;}突然想到之前做過的一個試題題目:
Time of Update: 2017-01-19
二進位檔案不是以ASCII代碼存放資料的,它將記憶體中資料存放區形式不加轉換地傳送到磁碟檔案,因此它又稱為記憶體資料的映像檔案。因為檔案中的資訊不是字元資料,而是位元組中的二進位形式的資訊,因此它又稱為位元組檔案。對二進位檔案的操作也需要先開啟檔案,用完後要關閉檔案。在開啟時要用ios::binary指定為以二進位形式傳送和儲存。二進位檔案除了可以作為輸入檔案或輸出檔案外,還可以是既能輸入又能輸出的檔案。這是和ASCII檔案不同的地方。用成員函數read和write讀寫二進位檔案對二進位檔案的讀
Time of Update: 2017-01-19
C++ get()函數讀入一個字元get()函數是cin輸入資料流對象的成員函數,它有3種形式:無參數的,有一個參數的,有3個參數的。1) 不帶參數的get函數其調用形式為 cin.get()用來從指定的輸入資料流中提取一個字元(包括空白字元),函數的傳回值就是讀入的字元。 若遇到輸入資料流中的檔案結束符,則函數值返迴文件結束標誌EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考慮到不與字元的ASCII代碼混淆,但不同的C
Time of Update: 2017-01-19
程式中的錯誤分為編譯時間的錯誤和運行時的錯誤。編譯時間的錯誤主要是語法錯誤,比如:句尾沒有加分號,括弧不匹配,關鍵字錯誤等,這類錯誤比較容易修改,因為編譯系統會指出錯誤在第幾行,什麼錯誤。而運行時的錯誤則不容易修改,因為其中的錯誤是不可預料的,或者可以預料但無法避免的,比如記憶體空間不夠,或者在調用函數時,出現數組越界等錯誤。如果對於這些錯誤沒有採取有效防範措施,那麼往往會得不到正確的運行結果,程式不正常終止或嚴重的會出現死機現象。我們把程式運行時的錯誤統稱為異常,對異常處理稱為異常處理。C++
Time of Update: 2017-01-19
在C++中,函數的形參可以是指向函數的指標,函數也可以返回函數的指標。例如:int (*ff(int)) (int *,int);表示:ff(int)是一個函數,帶有一個int型的形參,該函數返回int (*) (int *,int),它是一個指向函數的指標,所指向的函數返回int型並帶有兩個分別是Int*和int型的形參。使用typedef可使得定義更加易懂:typedef int (*PF) (int *,int);PF ff(int);下面給出一個例子:複製代碼
Time of Update: 2017-01-19
C++允許重載的運算子和不允許重載的運算子C++中絕大部分的運算子允許重載,具體規定見表不能重載的運算子只有5個:. (成員訪問運算子).* (成員指標訪問運算子):: (域運算子)sizeof (長度運算子)?: (條件運算子)前兩個運算子不能重載是為了保證訪問成員的功能不能被改變,域運算子和sizeof
Time of Update: 2017-01-19
一、字串字面值字串字面值是一串常量字元,字串字面值常量用雙引號括起來的零個或多個字元表示,為相容C語言,C++中所有的字串字面值都由編譯器自動在末尾添加一個Null 字元。字串沒有變數名字,自身表示自身複製代碼 代碼如下:"Hello World!" //simple string literal"" //empty string literal"\nCC\toptions\tfile.[cC]\n" //string literal using newlines and tabs字元字面值:
Time of Update: 2017-01-19
#include <string>#include <iostream>using namespace std; void main(){複製代碼 代碼如下: ////find函數傳回型別 size_typestring s("1a2b3c4d5e6f7g8h9i1a2b3c4d5e6f7g8ha9i");string flag;string::size_type position;//find 函數 返回jk 在s 中的下標位置 position =
Time of Update: 2017-01-19
1.為什麼要引入虛擬繼承虛擬繼承是多重繼承中特有的概念。虛擬基類是為解決多重繼承而出現的。如:類D繼承自類B1、B2,而類B1、B2都繼承自類A,因此在類D中兩次出現類A中的變數和函數。為了節省記憶體空間,可以將B1、B2對A的繼承定義為虛擬繼承,而A就成了虛擬基類。實現的代碼如下:class Aclass B1:public virtual A;class B2:public virtual A;class D:public B1,public