日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

近期知识点集合

發(fā)布時(shí)間:2025/3/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 近期知识点集合 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.指針變量p進(jìn)行自加運(yùn)算(即 執(zhí)行p++;)后,地址偏移值為1,則其 數(shù)據(jù)類(lèi)型為 char。說(shuō)法是否正確?

解析:錯(cuò)誤

class A

{

};

對(duì)于一個(gè)什么都沒(méi)有的類(lèi),字節(jié)也為1。

?

2.c語(yǔ)言中耦合度含義

模塊間的耦合性就是指當(dāng)修改其中某個(gè)模塊時(shí)會(huì)影起其他模塊運(yùn)行結(jié)果發(fā)生不可預(yù)料的變化。如果模塊間是通過(guò)直接調(diào)用對(duì)方內(nèi)部的全局變量來(lái)實(shí)現(xiàn)交互,則兩個(gè)模塊間的耦合性將會(huì)變得復(fù)雜而且難以控制。而模塊間的交互通過(guò)一個(gè)統(tǒng)一的接口函數(shù)來(lái)實(shí)現(xiàn),使得模塊都無(wú)需知道對(duì)方模塊內(nèi)部的具體實(shí)現(xiàn)(這也就是面向?qū)ο罄锩娴姆庋b)。當(dāng)某個(gè)模塊內(nèi)的實(shí)現(xiàn)發(fā)生改寫(xiě)或升級(jí)時(shí),只要確保模塊接口不變即可。這就大大降低兩模塊間的耦合。在規(guī)劃設(shè)計(jì)模塊時(shí)就應(yīng)認(rèn)真考慮好模塊的接口,以及與其他模塊的調(diào)用關(guān)系。所以要記住編程原則:針對(duì)接口編程,而不是針對(duì)實(shí)現(xiàn)。

?

3.十進(jìn)制變量i的值為100,那么八進(jìn)制的變量i的值為?

解析:144

十進(jìn)制 100=64+32+4 ==1*8^2+4*8^1+4*8^0 ==>144八進(jìn)制

對(duì)于數(shù)值小的用湊數(shù)法比較快捷

數(shù)值大的:

100%8=4100/8=12;

12%8=4;12/8=1;

1%8=1;1/8=0;所以結(jié)果是144

?

4.以下代碼的運(yùn)行結(jié)果為:

class Base {

public:

Base() {echo();}

virtual void echo() {printf(“Base”);}

};

?

class Derived:public Base {

public:

Derived() {echo();}

virtual void echo() {printf(“Derived”);}

};

??

int main() {

Base* base = new Derived();

base->echo();

return 0;

}

?

解析:

Base

Derived

Derived

Base* base = new Derived();

?

//首先將上面的語(yǔ)句分成兩部分:

//前一部分是基類(lèi)指針指向子類(lèi)對(duì)象實(shí)現(xiàn)動(dòng)態(tài)綁定,后一部分是new了一個(gè)子類(lèi)對(duì)象;

//語(yǔ)句執(zhí)行時(shí),先執(zhí)行后一部分new Derived()這句話(huà),它會(huì)調(diào)用Derived() {echo();}

//而執(zhí)行派生類(lèi)的構(gòu)造函數(shù)時(shí),會(huì)先去執(zhí)行基類(lèi)的構(gòu)造函數(shù),所以會(huì)調(diào)用Base() {echo();},此時(shí)不涉及到虛函數(shù)的動(dòng)態(tài)綁定,

//因?yàn)槲覀儸F(xiàn)在才執(zhí)行了后一部分,還沒(méi)有動(dòng)態(tài)綁定,所以正常調(diào)用基類(lèi)的echo()函數(shù),執(zhí)行完后返回到子類(lèi)的構(gòu)造函數(shù),執(zhí)行子類(lèi)的echo();

//然后執(zhí)行前一部分,實(shí)現(xiàn)虛函數(shù)的動(dòng)態(tài)綁定。

base->echo();

//此時(shí)考察的就是虛函數(shù)的使用了,基類(lèi)echo申明為虛函數(shù),所以調(diào)用時(shí)會(huì)去子類(lèi)尋找對(duì)應(yīng)的虛函數(shù)執(zhí)行。

?

5.在c++中的結(jié)構(gòu)體是否可以有構(gòu)造函數(shù)?

解析:

可以有

?

二者的默認(rèn)訪(fǎng)問(wèn)權(quán)限和默認(rèn)繼承屬性不一樣

類(lèi)是默認(rèn)公有繼承和訪(fǎng)問(wèn)私有的

結(jié)構(gòu)體是默認(rèn)私有繼承和訪(fǎng)問(wèn)公有的

?

6.此題注意一點(diǎn)(沒(méi)做錯(cuò))

#include<iostream>

using namespace std;

?

class Base

{

????int x;

public:

????Base(int b): x(b) {}

????virtual void display()

????{

????????cout << x;

????};

};

class Derived: public Base

{

????int y;

public:

????Derived(int d): Base(d), y(d) {} void display()

????{

????????cout << y;

????}

};

?

int main()

{

????Base b(1);

????Derived d(2);

????Base *p = & d;

????b.display();

????d.display();

????p->display();

????return 0;

?

}

解析:122

Base *p = & d是把 派生類(lèi)對(duì)象的地址&d賦值給指向基類(lèi)對(duì)象的指針變量p。

通過(guò)指向基類(lèi)對(duì)象的指針只能訪(fǎng)問(wèn)派生類(lèi)中的基類(lèi)成員,而不能訪(fǎng)問(wèn)派生類(lèi)增加的成員

?

7.知識(shí)點(diǎn)

如在定義局部變量時(shí)不賦值的話(huà),

則對(duì)靜態(tài)變量來(lái)說(shuō),編譯時(shí)自動(dòng)賦初值0空字符

而對(duì)自動(dòng)變量來(lái)說(shuō),如果不賦值,它的值是一個(gè)不確定的值

?

8.知識(shí)點(diǎn)

如果不指定函數(shù)類(lèi)型,系統(tǒng)會(huì)隱含指定函數(shù)類(lèi)型為int

?

9.知識(shí)點(diǎn)

在創(chuàng)建派生類(lèi)對(duì)象時(shí),構(gòu)造函數(shù)的執(zhí)行順序是:

基類(lèi)構(gòu)造函數(shù)→對(duì)象成員構(gòu)造函數(shù)→派生類(lèi)本身的構(gòu)造函數(shù)

?

10.運(yùn)行以下 C 語(yǔ)言代碼,輸出的結(jié)果是

?

解析:stra tra ra

相當(dāng)于把str[0]看成一個(gè)獨(dú)立的字符串,然后char *p=str[0],一個(gè)p指針指向它,很容易就得出來(lái)了

?

11.知識(shí)點(diǎn)

實(shí)型 字面值常量 有兩種表示方式:小數(shù)形式?和 指數(shù)形式

小數(shù)形式

由最前面的額正負(fù)號(hào),數(shù)字0-9和小數(shù)點(diǎn)組成,不允許有其他符號(hào);

指數(shù)形式

包括指數(shù)尾數(shù)兩個(gè)不可缺少的部分,用符號(hào)E(e)分割

E(e)左邊是尾數(shù),為十進(jìn)制整數(shù)或小數(shù)形式的實(shí)數(shù),

E(e)右邊為指數(shù)必須為十進(jìn)制整數(shù),表示乘以10的多少次方

?

12.知識(shí)點(diǎn)

論一個(gè)漢字占用的字節(jié)數(shù),那么 UTF-8 占用3個(gè)字節(jié), UTF-16 占用2個(gè)字節(jié)。

文檔最后的結(jié)束符號(hào) 也需要+2和+3

?

13.字符串賦值 char str[80]; str="abcdefg"是否正確?

解析:

數(shù)組名為指針常量,不能更改

數(shù)組名是不可以更改的。

const char* str; str="abcdefg";這樣寫(xiě)就是正確的,或者char str[80]="abcdefg";

?

14.遇到的最坑的題

以下程序段的輸出結(jié)果是?

char str[] = "ab\012\\n";

printf("%d", strlen(str));

?

解析:5

這題有個(gè)很大的陷阱,

\012是表示八進(jìn)制數(shù)10,也就是ASCII碼對(duì)應(yīng)的\n符號(hào)。

\\表示一個(gè)字符,斜杠

并且strlen結(jié)果不算字符串結(jié)束符,所以答案為5.

?

15.知識(shí)點(diǎn)

C 語(yǔ)言中的文件類(lèi)型只有 ASCII碼文件?和 二進(jìn)制文件?兩種

?

16.知識(shí)點(diǎn)

函數(shù)的定義不可以嵌套,函數(shù)的調(diào)用可以嵌套

?

調(diào)用嵌套都知道,關(guān)于定義嵌套,我首先想到了遞歸:

遞歸不就是在函數(shù)的定義的時(shí)候使用的嗎?——是的!

但使用遞歸,其實(shí)是一種函數(shù)嵌套調(diào)用,因?yàn)檫f歸在函數(shù)內(nèi)部使用的時(shí)候就一句話(huà),而不是定義。

~

所以,函數(shù)可以嵌套調(diào)用,而不可以嵌套定義。

?

17.函數(shù)func的定義如下:

void func(const int& v1, const int& v2)

{

????std::cout << v1 << ' ';

????std::cout << v2 << ' ';

}

?以下代碼在vs中輸出結(jié)果為_(kāi)___。

int main (int argc, char* argv[])

{

????int i=0;

????func(++i,i++);

????return 0;

}

解析:2 0

C語(yǔ)言函數(shù)參數(shù)入棧順序?yàn)橛捎蚁蜃?

func(++i, i++)可以分解為

參數(shù) i 先入棧 輸出0

然后執(zhí)行i++ 此時(shí)i為1

接著參數(shù) i 先執(zhí)行++i ??i 此時(shí)為2 ?后入棧進(jìn)行輸出 2

?

18.開(kāi)發(fā)C代碼時(shí),經(jīng)常見(jiàn)到如下類(lèi)型的結(jié)構(gòu)體定義:

typedef struct list_t

{

struct list_t *next;

struct list_t *prev;

char data[0];

}list_t;

最后一行char data[0];的作用是?

?

解析:

方便管理內(nèi)存緩沖區(qū)

減少內(nèi)存碎片化

?

19.知識(shí)點(diǎn)

19.1??死代碼的含義是指永遠(yuǎn)不會(huì)被執(zhí)行到的代碼段

?

19.2??strlen是根據(jù)ascii碼為0的字符來(lái)判斷是否結(jié)束的,'\0'的ascii碼為0,是結(jié)束符;0本身的值就是0,所以也被看做結(jié)束符

?

19.3

1.編輯:也就是編寫(xiě)C/C++程序。

2.預(yù)處理:相當(dāng)于根據(jù)預(yù)處理指令組裝新的C/C++程序。經(jīng)過(guò)預(yù)處理,會(huì)產(chǎn)生一個(gè)沒(méi)有宏定義,沒(méi)有條件編譯指令,沒(méi)有特殊符號(hào)的輸出文件,這個(gè)文件的含義同原本的文件無(wú)異,只是內(nèi)容上有所不同。

3.編譯:將預(yù)處理完的文件進(jìn)行一系列詞法分析、語(yǔ)法分析、語(yǔ)義分析及優(yōu)化后,產(chǎn)生相應(yīng)的匯編代碼文件。

4.鏈接:通過(guò)鏈接器將一個(gè)個(gè)目標(biāo)文件(或許還會(huì)有庫(kù)文件)鏈接在一起生成一個(gè)完整的可執(zhí)行程序。 鏈接程序的主要工作就是將有關(guān)的目標(biāo)文件彼此相連接,也就是將在一個(gè)文件中引用的符號(hào)同該符號(hào)在另外一個(gè)文件中的定義連接起來(lái),使得所有的這些目標(biāo)文件成為一個(gè)能夠被操作系統(tǒng)裝入執(zhí)行的統(tǒng)一整體。在此過(guò)程中會(huì)發(fā)現(xiàn)被調(diào)用的函數(shù)未被定義。

?

19.4 ?float指數(shù)位8位,指數(shù)范圍-128至127 。小數(shù)位23位

所以float 類(lèi)型(即 IEEE754 單精度浮點(diǎn)數(shù)格式)能表示的最大整數(shù)是

2^128-2^104

?

19.5 ?取余兩邊都必須為整數(shù)

?

?

對(duì)象成員構(gòu)造函數(shù):

一個(gè)類(lèi)的對(duì)象可以作為另一個(gè)類(lèi)的數(shù)據(jù)成員,此時(shí)把該對(duì)象稱(chēng)為類(lèi)的對(duì)象成員。

?

當(dāng)一個(gè)類(lèi)中出現(xiàn)對(duì)象成員時(shí),該類(lèi)的構(gòu)造函數(shù)就要為對(duì)象成員初始化,對(duì)象成員的初始化必須在構(gòu)造函數(shù)的初始化表中完成。

注意:

初始化對(duì)象成員時(shí)必須用對(duì)象成員名,而不是它的類(lèi)型名。例如:

class Date

{

????int year, month, day;

????Date(int y, int m, int d)

????{

????????year = y;

????????month = m;

????????day = d;

????}

};

?

class Person

{

????char name[12];

????char sex[4];

????Date birthday;

?

public:

????Person(char*, char*, int, int, int);

????……

};

?

Person:Person(char *n, char *s, int y, int m, int d):birthday(y, m ,d)

?

{

????strcpy(name, n);

????strcpy(sex, s);

}

此處使用birthday(y, m, d),不能使用Date(y, m, d)。

?

若一個(gè)類(lèi)包含對(duì)象成員,在建立該類(lèi)的對(duì)象時(shí),先調(diào)用對(duì)象成員的構(gòu)造函數(shù),初始化相應(yīng)的對(duì)象成員,然后才執(zhí)行該類(lèi)的構(gòu)造函數(shù)。

?

如果一個(gè)類(lèi)包含多個(gè)對(duì)象成員,對(duì)象成員的構(gòu)造函數(shù)的調(diào)用順序由它們?cè)谠擃?lèi)中的說(shuō)明順序決定,而它們?cè)诔跏蓟碇械捻樞驘o(wú)關(guān)。

總結(jié)

以上是生活随笔為你收集整理的近期知识点集合的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。