Time of Update: 2018-12-03
2001-11-12· ·杜瑾··yesky 介紹內嵌函式之前,有必要介紹一下預先處理宏。內嵌函式的功能和預先處理宏的功能相似。相信大家都用過預先處理宏,我們會經常定義一些宏,如 #define TABLE_COMP(x) ((x)>0?(x):0) 就定義了一個宏。
Time of Update: 2018-12-03
#include <stdio.h>#include <string.h>int main(int argc, char *argv[]){char ary_name[20];char ary_vname[20];memset(ary_name,0x0,10);sprintf(ary_name,"%s","我是中國人");strcpy(ary_name,"字串數組賦值");printf("ary_name=%s\n",ary_name);memcpy(ary_vname,
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;using System.Runtime.InteropServices;using System.Drawing.Imaging;namespace KeyBoard{
Time of Update: 2018-12-03
神乎其技,惟C程式,功到自成,十大建議! 1、汝應頻繁催動lint工具,據其文法聲明修習內力,此事皆因lint之思慮決斷實遠在君上。 2、不可依隨NULL指標,如若不然,混沌癡顛必俟君於彼岸。 3、縱有天賦大智慧,知曉其事無礙,汝亦當盡數強制挪移函數參數為原型所期之資料類型,以免一時疏忽,致使資料類型向汝討還血債。 4、若標頭檔未於函數原型之中聲明傳回值類型,汝當親為此事,更須謹慎再三,以防不測降臨汝身。 5、汝須親核字串、數組操作之越界與否。古之聖人有言: 嘗祈門人對答“
Time of Update: 2018-12-03
很多人學C語言很長一段時間了,還不知C究竟能幹什麼,以為學習c語言沒什麼用,純粹是為了應付學校的考試.更有人說"學C語言?別做如此愚蠢的行為了!趕快學C++吧!"這種看法是不對的,不應該把c跟c++之間划起絕對的界限,過分看重c++而把c貶得一無是處,這是很片面的.C++功能雖然強大,但它畢竟是c的"超集",在c++裡有哪一處找不到c的影子呢?沒有c的支援,c++只能是無本之木。
Time of Update: 2018-12-03
http://www.cppreference.com/operator_precedence.html PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping
Time of Update: 2018-12-03
堆排序是一個效能很優的排序演算法,一般藉助資料結構——最大堆,來實現排序的效果,一般步驟為:建堆——排序,建堆和排序的過程中都夾雜著保持堆的穩定性。優先順序隊列也用到資料結構堆,主要C語言演算法如下:#include <stdio.h>#include <limits.h>//記錄最大堆的長度unsigned int heap_size = 0;//下標從0開始//求父節點的下標unsigned int parent(unsigned int
Time of Update: 2018-12-03
目前遇到個非常頭痛的問題,公司目前有多個應用系統,採用C#,Java,C++,C,VB,等等語言開發的應用系統,為瞭解決多個應用系統之間的登陸問題,打算採用SSO解決登陸問題,做成單點登陸,只要登陸其中任何一個系統,就可以訪問其他系統的資源和服務,這些應用系統中有採用b/s、和c/s,對於b/s的應用,cas可以很方便的解決各系統間登陸的問題,麻煩出在c/s上,比如說:
Time of Update: 2018-12-03
1. 模板的概念。我們已經學過重載(Overloading),對重載函數而言,C++的檢查機制能通過函數參數的不同及所屬類的不同。正確的調用重載函數。例如,為求兩個數的最大值,我們定義MAX()函數需要對不同的資料類型分別定義不同重載(Overload)版本。//函數1.int max(int x,int y);{return(x>y)?x:y ;}//函數2.float max( float x,float y){return (x>y)? x:y ;}//函數3.double
Time of Update: 2018-12-03
Objective-C裡面的特殊類型,用來指向物件類型,有點類似與c語言的(void *)。關鍵字nil用來表示c語言的null.有了id,使用者在調用一個對象的方法時,就可以不必知道這個對象具體是什麼類型。執行個體如下:1. 代碼://ClassA.h#import <Foundation/NSObject.h>@interface ClassA: NSObject -(void) print;@end//ClassA.m#import
Time of Update: 2018-12-03
作為物件導向的程式設計語言,object-c當然也支援繼承,而且和java一樣,支援的是單一繼承,即只有一個超類。當然,也支援覆蓋(或重寫)父類的同名方法。例子如下: 1. 代碼: //1. MyRectangle.h#import <Foundation/NSObject.h>@interface MyRectangle: NSObject { int width; int height;}-(MyRectangle*) initWithWidth: (int) w
Time of Update: 2018-12-03
和C++不同的是,object-c中並沒有規定說一定要實現一個建構函式和解構函式;所以,在object-c中,其實沒有建構函式和解構函式這樣的概念,取而代之的應該是對象的創造和初始化,對象的釋放。與對象的釋放相關的關鍵字,最基本的有dealloc,release, autorelease,用它們就可以進行對象的釋放。執行個體代碼如下:1. 定義ClassA如下 :#import <Foundation/Foundation.h> @interface ClassA :
Time of Update: 2018-12-03
object-c提供了一批用於檢測一個對象是不是某個類的對象或成員,它們是isKindOfClass,isMemberOfClass,respondsToSelector,instancesRespondToSelector,performSelector等,下面給出了這些函數的一些用法。1.代碼:// MyRectangle類和Square類略(它們的定義見前一節“8.object-c的繼承”),// main.m#import "Square.h"#import
Time of Update: 2018-12-03
object-c的"+"類似於C++中的靜態函數,它可以訪問由static聲明的變數。執行個體如下:1. 代碼://ClassA.h#import <Foundation/NSObject.h>static int count;@interface ClassA: NSObject +(int) initCount;+(void) initialize;@end////ClassA.m#import "ClassA.h"@implementation ClassA-(id)
Time of Update: 2018-12-03
在object-c中,系統自動會為每個建立的對象儲存一個引用計數器。當對象被建立時,引用計數設定為1,每一次必須保持該對象時,需要發送(即調用)retain來使得引用計數加1。不再需要對象時,可以發送release訊息,使得引用計數減1。當引用計數為0的時候,系統就會釋放它的記憶體(通過向對象發送dealloc訊息,也就是真正地去回收對象的記憶體)。另外,可以用retainCount來得到這個對象的引用計數,返回的類型是NSUInteger整數。基本的調用方式如下:[obj
Time of Update: 2018-12-03
【1 使用宏】 1.1 #ifdef NDEBUG #define TRACE(S) S #else #define TRACE(S) printf("%s;/n", #S); S #endif 問:以上TRACE()宏的作用是什嗎? 1.2 #error的作用? 1.3 定義一個宏,求出給定數組中的元素的個數 #define NELEMENTS(array) ?? 1.4 定義一個宏,求出給定結構中給定成員的位移量
Time of Update: 2018-12-03
指標是c/c++語言的特色,而數組名與指標有太多的相似,甚至很多時候,數組名可以作為指標使用。於是乎,很多程式設計者就被搞糊塗了。而許多的大學老師,他們在c語言的教學過程中也錯誤得給學生講解:/"數組名就是指標/"。很幸運,我的大學老師就是其中之一。時至今日,我日複一日地進行著c/c++項目的開發,而身邊還一直充滿這樣的程式員,他們保留著/"數組名就是指標/"的誤解。 想必這種誤解的根源在於國內某著名的c程式設計教程。如果這篇文章能夠糾正許多中國程式員對數組名和指標的誤解,筆者就不甚欣慰了。藉
Time of Update: 2018-12-03
枚舉和類被稱為使用者定義型別,他們必須由使用者定義出來,而不能事先沒有聲明就直接使用,例如在使用CMyclass a之前必須定義CMyclass類型。內部類型可以直接使用,例如可以直接這樣int a。按照定義,true具有值1,而false具有值0。與此相對應,整數可以隱式地轉換到bool值:非0的整數轉換為true,而0轉換為false。舉例:int a = 10; bool b = a; int c = b;
Time of Update: 2018-12-03
沒有任何對象會被分配到地址0。因此,0被當做一個指標文字量,表明一個指標當時並沒有指向任何對象。在C中流行的是用一個宏NULL表示0指標。由於C++收緊的類型檢查規則,採用普通的0而不是一些人建議的NULL宏,帶來的問題會更少一些。數組元素的個數,即數組的界,必須是一個常量運算式。如果需要變化的界,那麼可以用vector。例如:void f(int i){ int v1[i]; //錯誤,數組大小必須是常量運算式 vector<int>
Time of Update: 2018-12-03
string str1 =Process.GetCurrentProcess().MainModule.FileName;//可獲得當前執行的exe的檔案名稱。 string str2=Environment.CurrentDirectory;//擷取和設定目前的目錄(即該進程從中啟動的目錄)的完全限定路徑。 //備忘