C 學習筆記 4

2021-04-01 16:44:46 字數 3098 閱讀 4955

17

.函式呼叫方式

_stdcall

表示指定這個函式採用

_stdcall

方式。這種呼叫方式有如下特徵:(1

)呼叫時,引數從右到左壓入堆疊。(2

)被呼叫的函式負責清除堆疊。(3

)編譯時函式名前加「

_」,在函式名後加「

@paralength

」。其中

paralength

為所有引數以位元組為單位的長度。

如果不指定函式採用

_stdcall

方式的時候,則採取

c/c++

預設的呼叫方式

_cdecl(

它的縮寫是「

c declaration」)

。這種呼叫方式有如下特徵:(1

)呼叫時,引數從右到左壓入堆疊。(2

)呼叫的函式負責清除堆疊。(3

)編譯時在函式名前加「_」。

18

.基本的非託管型別和託管型別的對應表

wtypes.h

中的非託管型別

非託管

c語言型別

託管型別

說明

handle

void*

system.intptr32位

byte

unsigned char

system.byte8位

short

short

system.int1616位

word

unsigned short

system.uint1616位

intint

system.int3232位

uint

unsigned int

system.uint3232位

long

long

system.int3232位

bool

long

system.int3232位

dword

unsigned long

system.uint3232位

ulong

unsigned long

system.uint3232位

char

char

system.char

用ansi

修飾float

float

system.single32位

double

double

system.double64位

19

.不同型別的資料互相轉換時要注意的問題。

(1

)無符號型別的資料與有符號型別的資料之間的轉換。

無符號資料的位元位可以被編譯器解釋為有符號資料,如無符號短整數

60000

,它會被編譯器解釋為有符號短整數

-5536

。(暫時不知它怎麼轉的)(2

)由函式過載和預設引數產生的歧義性。

由於過載使得可以向相同的函式名傳遞資料型別不相同的引數,又由於

c++的自動型別轉換機制,

c++會自動嘗試將呼叫函式的實際引數型別轉換為函式的形式引數的型別。如有下面的函式定義:

foo(float a); foo(double b);

函式呼叫:

foo(10);

這就產生歧義了,因為編譯器不知將

10轉成

float

型還是double

型。編譯器會將這個歧義性報告出錯資訊:

error c2668: 'foo' : ambiguous call to overloaded function

另外,由於有預設引數,可能會產生引數個數的歧義。如有下面的函式定義:

foo(int a);foo(int b,int c = 1);

函式呼叫:

foo(10)

也產生了歧義,因為編譯器不知

foo(10)

是呼叫foo(int a)

還是預設呼叫

foo(int b,int c = 1);

報錯:error c2668: 'foo' : ambiguous call to overloaded function

20

.字元轉義序列

/b退格:刪除最後乙個字元

/f換頁

/n換行

/r回車

/t水平製表符

/」雙引號

/』單綽號

//後斜線

/v垂直製表符

/a喇叭嗡鳴

/?問號(?)

/n八進位制常量(其中

n是乙個八進位制數值)

/xn十六進製制常量(其中

n是乙個十六進製制數值)

21

.非標準

c++定義的標頭檔案必需有

.h

如#include

22

goto

語句的乙個用法

使用goto

語句可以從一段巢狀很深的**中跳出,如:

for(…)

}24

.返回引用

函式可以返回引用。當函式返回引用時,它返回的是乙個指向返回值的隱式指標。如下例:

#include

using namespace std;

double &f();//define a function that return a reference

int main()

double &f()

因為f()

返回的是

val的引用,而該引用則成為賦值語句的目標變數,因此,99。

3通過由

f()所返回的引用被間接地賦給了

val。

c 學習筆記4

toc 主要內容為以下兩部分 1.布林資料型別 2.列表初始化 部分 這個資料型別在不同語言裡面的表現方式是不一樣的,尤其在c語言和c 裡布林資料型別表現方式有很大區別。布林表示式 布林表示式的本質是一段 其結果為 真 true 或者 假 false 我們可以通過關係運算得到布林值,關係運算 rel...

C 學習筆記 4

1.靜態方法和例項方法 用修飾符static 宣告的方法為靜態方法,不用修飾符static 宣告的方法為例項方法。不管類生成或未生成物件,類的靜態方法都可以被使用,使用格式為 類名.靜態方法名。靜態方法只能使用該靜態方法所在類的靜態資料成員和靜態方法。這是因為使用靜態方法時,該靜態方法所在類可能還沒...

c 網路程式設計學習筆記 4

chapter 3.併發設計空間 一 迴圈 併發及反應式伺服器 迴圈伺服器在處理後續請求之前,會完整地處理每乙個客戶請求。因此,在處理乙個請求時,迴圈伺服器要麼將其他請求排成佇列,要麼忽略它們。迴圈伺服器適合以下兩種服務 l短期服務 l不經常執行的服務 在內部,迴圈伺服器常常在 單程序 位址空間中執...