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