C 相關的基礎題

2021-05-25 19:58:42 字數 1610 閱讀 7789

#ifndef __incvxworksh

#define __incvxworksh

#ifdef __cplusplus

extern "c"

#endif

#endif /* __incvxworksh */

解答:標頭檔案中的編譯巨集

#ifndef

__incvxworksh

#define

__incvxworksh

#endif

的作用是防止被重複引用。

作為一種物件導向的語言,

c++支援函式過載,而過程式語言

c則不支援。函式被

c++編譯後在

symbol

庫中的名字與

c語言的不同。例如,假設某個函式的原型為:

void foo(int x, int y);

該函式被

c編譯器編譯後在

symbol

庫中的名字為

_foo

,而c++

編譯器則會產生像

_foo_int_int

之類的名字。

_foo_int_int

這樣的名字包含了函式名和函式引數數量及型別資訊,

c++就是考這種機制來實現函式過載的。

為了實現c和

c++的混合程式設計,

c++提供了

c連線交換指定符號

extern "c"

來解決名字匹配問題,函式宣告前加上

extern "c"

後,則編譯器就會按照

c語言的方式將該函式編譯為

_foo

,這樣c

語言中就可以呼叫

c++的函式了。

編寫類string

的建構函式、析構函式和賦值函式,已知類string

的原型為:

class string

;解答:

//普通建構函式

string::string(const char *str)

else

}// string

的析構函式

string::~string(void)

//拷貝建構函式

string::string(const string &other)

// 得分點:輸入引數為

const型//

賦值函式

string & string::operate =(const string &other) //

得分點:輸入引數為

const型

編寫乙個函式,得到char p[100]大小空間。

基礎是根本,連根基不好,樓越高則越危險!

void getmemory( char **p, int num )

void test( void )

牢記「  ->  .」的優先順序高於 *(解位址)

++ -- *(解位址) &(取位址)的結合性是「自右向左」

float (*h)();

表示h是乙個指向返回值為浮點型別的函式的指標,因此,

(float (*)())

表示乙個「指向返回值為浮點型別的函式指標」的型別轉換符。

c 相關基礎

stl內存在哪 vector map set等標準容器預設都是使用記憶體分配器模板類allocator管理記憶體的分配 釋放。allocator呼叫new delete操作符進行批量的記憶體分配。所以在堆。首先我們知道c 中主要的記憶體儲存分配方式有 棧,堆,全域性 靜態儲存區,常量儲存區,自由儲存...

c 相關基礎學習

1.剖析c 是如何實現過載的?在c 中,同名的函式可以完成不同引數列表,可同可不同的返回值的函式。例如 int add int a,int b double add double a,double b int main 同名函式可有三種情況進行過載 1.引數型別不同 2.引數的個數不同 3.以上兩點...

C 程式設計基礎題

題目 1.字串轉為int 輸入1234 輸出1234 注意 輸入的必須為字串,輸出必須為int型 2.偶數字轉為大寫 例如 輸入 lanzhihui is a boy 輸出 lanzhihui is a boy 注意 空格也算一位,符號不變.3.每個單詞偶數字轉為大寫 例如 輸入 lanzhihui...