nowcoder C 練習筆記

2021-07-26 08:43:22 字數 1900 閱讀 3769

位元組對齊

結構體變數的首位址能夠被器最寬基本型別的成員的大小整除

結構體每個成員相對於結構體首位址的偏移量都是成員大小的整數倍。

結構體的總大小最寬基本型別成員大小的整數倍,如有需要編譯器會在最末尾乙個成員之後加上填充位元組。

struct t;

t *p;

解析:a佔乙個位元組,d在64位中佔8個位元組(32位 4個位元組),p一樣,

所以根據準則2,d的偏移量都是8的整數倍,所以d得位址為[8]-[15],b 佔了4個位元組,位址為[16][19],c指定為16,佔了兩個位元組,位址為20 21,e佔8位元組。

大端儲存 編譯和體系結構

unsigned int a=0x1234;其中int是4個自己,大端儲存,補齊16進製表示為:0x00 0012 34

unsigned char b=(unsigned char)&a; 由於大端儲存,所以上述int a變數的最低位址儲存的是 十六進製制表示最左邊的1個位元組,為0x00.

void foo(int

*a,int

*b)void main()

foo(*a,*b) 交換a和b的值,所以經過a,b,c的值經過

foo(&b,&c);

foo(&c,&a);

foo() 用於交換數值

foo(&a,&b);  //2,1,3

foo(&b,&c); 、、2,3,1,

foo(&c,&a); 、、1,3,2

#include

using namespace std;

class a

物件生成構造順序問題,先構造繼承過來的父類,然後同級順序構造

加了virtual後,繼承關係是這樣的

ab c

d不加的

a ab c

\ /d

虛繼承解決繼承二義性,虛繼承中對基類的構造是該型別的例項物件初始化,但d型別的例項物件對a類初始化只與d有關,不會再執行一次b、c中的構造,即abcd。

#include

using

namespace

std;

class a

};int main()

對於c++的設計者為了提高執行時的效率,實現靜態繫結,也就是在執行之前就確定成員函式,

c++ 編譯器這麼幹,

1. 查詢pa的型別,發現有乙個非虛的成員函式叫test。編譯器幹的

2. 找到生成函式呼叫,直接呼叫a::test(pa).

到了執行的時候,發現test()函式中沒有任何解引用pa指標的**,真實情況下也不會引發segment fault。這裡對成員函式的解析,和查詢對應的**都是在編譯階段完成的,而非執行時完成的,這就是所謂的靜態繫結,也就叫早繫結。

public

intbsearch(int data,int x,int y, int v)

}

注意沒有包含上限,就需要對1 4 5 進行處理,m=x+(y-x)/2 是防止xy都很大的情況下x+y越界。

char *pa[7]

指標陣列,每個元素char 型指標

vector::erase() 從指定容器刪除指定位置的元素或某段範圍內的元素

iterator erase(iterator_where);

iterator erase(iterator_first,iterator_last);

if 刪除指定位置是,返回值是乙個迭代器,指向刪除元素的下乙個元素;

如果是刪除某個範圍內的元素是,返回值也表示是乙個迭代器,指向最後乙個刪除元素的下乙個元素。

oracle練習筆記

描述乙個錶用 desc employees 過濾重複的部門 select distinct department id from employees 別名的三種方式 1 空格 2 加as 3 多個單詞組成的別名必須加空格,要麼用下劃線分開 條件匹配日期的 where to char date,yyy...

Cookie 練習筆記

1.cookie的建立 cookie ck new cookie string name,string vallue 2.cookit的屬性 主要了解了,name,value path,maxage cookie的name可能名字相同,但路徑path不同,建立後不能更改,value不能為中文,能更改...

WebStorm練習筆記

overflow是css 最主要的用法有兩種 style width 500px height 22px line heihgt 22px overflow hidden 這裡有一大長串文字div 作用是當寬度文字超出500px,高度超出22px的時候,超出的部分隱藏起來 overflow auto...