Time of Update: 2018-12-05
一般情況下,來源程式中所有的行都參加編譯。但是有時希望對其中一部分內容只在滿足一定條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是“條件編譯”。有時,希望當滿足某條件時對一組語句進行編譯,而當條件不滿足時則編譯另一組語句。 條件編譯命令最常見的形式為: /////////#ifdef 標識符 程式段1 #else 程式段2 #endif /////////它的作用是:當標識符已經被定義過(一般是用#define命令定義),則對程式段1進行編譯,否則編譯器段2。
Time of Update: 2018-12-05
阿西莫夫的科幻小說,想必很多人都看過,尤其是機器人系列給我的印象相當深刻。不管是機器人三定律,類人機器人,還是那個樣子雖醜卻具有讀心術的機器人,都令我感歎作者的驚人想象力啊。 造一個機器人對我來講,目前無異於天方夜譚,但是設計一個虛擬機器人應該還是有可能的。好吧,我非常想要一個能和我聊天的機器人,於是我設計一個機器人class
Time of Update: 2018-12-05
//鏈隊的C語言描述,選自《資料結構(c語言描述)》,徐孝凱、賀桂英,清華大學出版社。#include <stdio.h>#include <stdlib.h>typedef int ElemType;//鏈表結構體定義struct sNode { ElemType data; /*範圍*/ struct sNode* next; /*連結指標域*/};//連結隊列結構體定義struct QueueLk { struct sNode* front;
Time of Update: 2018-12-05
C++的冒泡排序是經典的演算法之一 核心思想就是一遍遍的把最大的那個數放到最下面 然後在迴圈放 像冒泡泡一樣的比較 下面的例子使用了個函數指標來定義函數,這樣可以先定義函數的風格,然後再定義函數:代碼如下:#include<iostream>using namespace std; typedef int (*CompareFunc)(int a, int b);//聲明一個函數指標void BubbleSort(int *ptr, int length,CompareFunc
Time of Update: 2018-12-05
//以下是順序棧的C語言實現,選自《資料結構(c語言描述)》,徐孝凱、賀桂英,清華大學出版社。 #include "stdafx.h" #include <stdlib.h> //初始長度為100 #define StackSize 100 typedef char DataType; typedef struct stack{ DataType data[StackSize]; int top; }SqStack; //初始化棧 void InitStack(
Time of Update: 2018-12-05
應用這個口訣的前提是你必須認識所有的C語言的運算子。 優先決 括弧成員第一; //括弧運算子[]() 成員運算子. -> 全體單目第二; //所有的單目運算子比如++ -- +(正) -(負) 指標運算*& 乘除餘三,加減四; //這個"餘"是指取餘運算即% 移位五,關係六; //移位元運算符:<< >> ,關係:> < >= <= 等 等於(與)不等排第七; //即== != 位與異或和位或;
Time of Update: 2018-12-05
弄 symbian 的時候發現symbian 檔案的路徑名稱都是 // 這樣串連的,仔細想了下原來是逸出字元的問題,還有就是今天看的檔案系統的代碼的例子檢測一行讀取完畢了沒有用的是檢測'/r' 估計也是這個問題
Time of Update: 2018-12-05
擴充方法被定義為靜態方法,但它們是通過執行個體方法文法進行調用的。它們的第一個參數指定該方法作用於哪個類型,並且該參數以 this 修飾符為首碼。僅當您使用 using 指令將命名空間顯式匯入到原始碼中之後,擴充方法才位於範圍中。下面的樣本示範為 System..::.String 類定義的一個擴充方法。請注意,它是在非嵌套、非泛型靜態類內部定義的:namespace ExtensionMethods{ public static class MyExtensions {
Time of Update: 2018-12-05
//單鏈表的C語言描述,選自《資料結構(c語言描述)》,徐孝凱、賀桂英,清華大學出版社。#include <stdio.h>#include <stdlib.h>#define NN 12#define MM 20//鏈表結構體定義typedef int ElemType;struct sNode { ElemType data; /*範圍*/ struct sNode* next;
Time of Update: 2018-12-05
指標函數說明他是一個傳回值為指標的函數一個函數不僅可以返回一個整形資料的值,字元類型的值,實型的值,還可以帶回指標類型的資料,使其指向某個地址單元。 指標函數嚴格的叫法是返回指標的函數,一般的定義格式為: 返回的類型標示符 *函數名(參數列表) eg:int *f(x,y);其中x,y是形式參數,f是函數名 調用後返回一個指向整型資料的地址指標f(x,y)是函數 其值是指標。如 char *ch();表示一個返回字元型指標的函數;例:將字串1(str1)複製到字串2(str2
Time of Update: 2018-12-05
新寫的windows service, 向web端傳遞資料時,資料都為空白或者出現服務異常的情況。仔細查了查原因,原來傳遞的資料裡有一個枚舉類型的欄位,預設情況下,枚舉中每個元素的基礎類型是int。而在資料庫中,同樣是以int儲存的;我在向資料庫表裡插入這個枚舉類型資料時,沒有保證一定能在enum類中找到對應的值;而在資料庫,如果該列可以為空白的話,有時也可能忘記插入值。 當然,int類型為空白時,從資料庫讀出來時,會預設賦上0。而我的enum定義時,是這樣寫的。enum Site {
Time of Update: 2018-12-05
宏在C++中的替代解決方案 宏,在C語言中是個神的存在,能夠玩出各種花樣,也正因為此,才會給普通程式員造成不少的困擾。由於宏只在先行編譯階段起作用,使得編譯器無法檢測其中的Bug,作為新時代的C++程式員,還是遠離的好。C++為宏提供了一些替代的解決方案,嗯,是一些。 1. 常量定義#define NUM
Time of Update: 2018-12-05
//隊列的C語言描述,選自《資料結構(c語言描述)》,徐孝凱、賀桂英,清華大學出版社。#include <stdio.h>#include <stdlib.h>typedef int ElemType;//隊列的順序儲存結構同樣可以被定義在一個記錄類型中,假定該記錄類型用QueueSq表示,則定義為:/*struct QueueSq { ElemType queue[MaxSize]; int front, rear,
Time of Update: 2018-12-05
即使類型轉換本身是危險的,在有些時候類型轉換也是不可或缺的。程式員不使用顯式轉換,編譯器也可能會使用隱式轉換,那還不如把代碼控制在程式員自己手中。 C++有4種顯式類型轉換操作符,最好不要使用C語言編程方式遺留的隱式類型轉換。第一,顯式類型轉換在代碼中更明顯,可以提醒程式員你的代碼設計可能存在一些醜陋的地方;第二,顯式類型轉換可以檢測轉換中的錯誤,比如當cast失敗時,你會得到null 指標,但隱式轉換就不會;第三,有些情況,隱式類型轉換無法做到,比如const_cast的功能。
Time of Update: 2018-12-05
一直分不清楚他們是幹什麼的,這回好好的總結下:1:按值傳遞: 程式如下:#include <iostream>using namespace std;void swap(int a,int b)//指標儲存地址{int c;cout<<"前: a:"<<a<<" b:"<<b<<endl;c=a;a=b;b=c;cout<<"後: a:"<<a<<" b:"<<b&
Time of Update: 2018-12-05
感覺徹底的鬱悶了 整了好多的文法 竟然還有的文法沒有聽到過 真是見識了 看觀察者模式的例子時候出現了個仿函數 真是鬱悶 沒辦法 下面是找的內容 我暈了 不過還好理解了點點 仿函數就是在類裡面重載函數 重載函數的哪個地方我們就可以有參數 這樣的時候我們調用的時候就直接用類名加上哪個函數後面的參數就可以了 這樣的話就和直接調用函數是一個寫法 這就是叫仿函數的由來 也不知道是誰這樣弄的 麻煩人 還偏偏有人用 為了顯示懂得多吧 真是鬱悶人下面就是具體的例子://**//
Time of Update: 2018-12-05
你應當如何學習C++(以及編程)(rev#1) By
Time of Update: 2018-12-05
<!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso 10]><![endif]--><!-- [if gte mso 9]><![endif]--><!-- [if gte mso
Time of Update: 2018-12-05
首先是先行編譯,這一步可以粗略的認為只做了一件事情,那就是“宏展開”,也就是對那些#***的命令的一種展開。 例如define MAX 1000就是建立起MAX和1000之間的對等關係,好在編譯階段進行替換。 例如ifdef/ifndef就是從一個檔案中有選擇性的挑出一些合格代碼來交給下一步的編譯階段來處理。這裡面最複雜的莫過於include了,其實也很簡單,就是相當於把那個對應的檔案裡面的內容一下子替換到這條include***語句的地方來。
Time of Update: 2018-12-05
從概念上講。指標從本質上講就是存放變數地址的一個變數,在邏輯上是獨立的,它可以被改變,包括其所指向的地址的改變和其指向的地址中所存放的資料的改變。而引用是一個別名,它在邏輯上不是獨立的,它的存在具有依附性,所以引用必須在一開始就被初始化,而且其引用的對象在其整個生命週期中是不能被改變的(自始至終只能依附於同一個變數)。在C++中,指標和引用經常用於函數的參數傳遞,然而,指標傳遞參數和引用傳遞參數是有本質上的不同的:指標傳遞參數本質上是值傳遞的方式,它所傳遞的是一個地址值。值傳遞過程中,被調函數的