-
求一個(gè)負(fù)數(shù)的二進(jìn)制:
首先,找到其正數(shù)二進(jìn)制表達(dá)形式;
然后,對(duì)最高位取1,獲得原碼;
其次,除最高位(符號(hào)位)不變外,其余位取反,獲得反碼;
最后,在反碼的基礎(chǔ)上加1,獲得補(bǔ)碼,也就是計(jì)算機(jī)對(duì)該負(fù)數(shù)的二進(jìn)制表達(dá)。
計(jì)算機(jī)用補(bǔ)碼表示負(fù)數(shù),可以同正數(shù)一樣對(duì)其進(jìn)行加法操作。
查看全部 -
RAII(resource acquisition is initialization)
class A
{
? ? ? ? ?A();//創(chuàng)建資源
? ? ? ? ?void fun();//操作資源
? ? ? ?~A();//釋放資源
};
查看全部 -
淺拷貝
深拷貝
查看全部 -
引用
與指針類似,相當(dāng)于指針plus版
int &ra=a;
類中對(duì)象用指針需要用"->"來操作
A *pa=&a;
pa->data=20;
類中對(duì)象用引用時(shí)用"."來操作
A &ra=a;
ra.data=20;
二者其他區(qū)別:
引用必須有初始化值,指針可以賦值為nullptr
引用不可以二次賦值,指針則可以
查看全部 -
A.B則A為對(duì)象或者結(jié)構(gòu)體; 點(diǎn)號(hào)(.):左邊必須為實(shí)體
A->B則A為指針,->是成員提取,A->B是提取A中的成員B,A只能是指向類、結(jié)構(gòu)、聯(lián)合的指針; 箭頭(->):左邊必須為指針;
編聯(lián)
將一個(gè)指針的類型做成強(qiáng)轉(zhuǎn),然后調(diào)用 func 函數(shù),func 函數(shù)會(huì)隨著被強(qiáng)轉(zhuǎn)的類型的變換而變換,這種函數(shù)的關(guān)聯(lián)過程稱為編聯(lián)。
靜態(tài)編聯(lián)
在編譯階段就將函數(shù)實(shí)現(xiàn)和函數(shù)調(diào)用關(guān)聯(lián)起來,因此靜態(tài)聯(lián)編也叫早綁定
動(dòng)態(tài)編聯(lián)
在程序運(yùn)行時(shí)動(dòng)態(tài)地進(jìn)行,根據(jù)當(dāng)時(shí)的情況來確定調(diào)用哪個(gè)同名函數(shù)
查看全部 -
子類和父類相互轉(zhuǎn)換
Staff * staff = coder; // 子類轉(zhuǎn)父類隱式轉(zhuǎn)換就可以
Coder * coder = (Coder *)staff; // 父類轉(zhuǎn)子類必須顯式轉(zhuǎn)換查看全部 -
分部門的方式:多態(tài)公有繼承
子類中使用 public 修飾符,那么父類中的成員函數(shù)和成員變量將會(huì)保持父類的權(quán)限。這種是使用最廣泛的繼承方式,我們把它叫做公有繼承。
查看全部 -
類的繼承
類,就像是對(duì)某一類事物的抽象模版,而在某些場(chǎng)景下,我們希望對(duì)抽象的內(nèi)容進(jìn)行擴(kuò)增,或者說更加具體化。為了完成這種關(guān)系,便是繼承。
class Coder : public Staff
{
};查看全部 -
不可重載的運(yùn)算符:
.
.* ->*
::
sizeof
?:
#查看全部 -
拷貝構(gòu)造函數(shù)
Staff(const staff? &staff);
memcpy(mem,staff.mem,20);
是C和C++使用的內(nèi)存拷貝函數(shù),函數(shù)原型為void *memcpy(void *destin, void *source, unsigned n);函數(shù)的功能是從源內(nèi)存地址的起始位置開始拷貝若干個(gè)字節(jié)到目標(biāo)內(nèi)存地址中,即從源source中拷貝n個(gè)字節(jié)到目標(biāo)destin中。
查看全部 -
聲明函數(shù)指針
? ? ? ? ? ? ? ? ? ? ? ? ? ? int(*funcP)(int a,int b)
指針指向函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ??int(*funcP)(int a,int b)=func1;
通過指針調(diào)用函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(*funcP)(5);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int ret=(*funcP)(5);帶返回值
函數(shù)中傳入函數(shù)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int dowork(int a,int b,int (*callback)())
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ......
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int ret=(*callback)();??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
回調(diào)函數(shù)/鉤子函數(shù) :應(yīng)用到函數(shù)中插入代碼/多線程中
查看全部 -
指針聲名
指針運(yùn)算
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 地址? * > 內(nèi)存
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 地址? ?&<內(nèi)存
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int*p=&a;? //變量A的地址賦值給指針P,P指向變量A
指針和數(shù)組
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int*p=arr;(數(shù)組變量名)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p+1(實(shí)際上是地址+類型大小)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p[1]=>*(p+1)指針偏移操作
指針和結(jié)構(gòu)體
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? struct S *p=&s;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p->a=12;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p->b=22;
查看全部 -
大端字節(jié)序(big endian):高位在前。在IO和網(wǎng)絡(luò)傳輸方面采用方式,大端字節(jié)序又被稱之為網(wǎng)絡(luò)細(xì)節(jié)序
小端字節(jié)序(little endian):低位在前。大部分機(jī)器采用小端字節(jié)序
查看全部 -
7
0111
1111原碼
1000反碼
1001補(bǔ)碼
查看全部 -
#include <stdio.h>
#include <stdlib.h>
int * func()
{
??? int * arr = (int *)malloc(4 * sizeof(int));
??? return arr;
}
int main(int argc,char **argv)
{
??? int * p = func();
??? free(p);
??? return 0;
}查看全部
舉報(bào)