面試筆記1(陣列)

2021-07-02 07:22:43 字數 2674 閱讀 8230

開始:

c++內建型別分為兩組:基本型別和復合型別。復合型別有:陣列、字串、指標、引用、結構體和共用體。

總結:char *  位元組數不一樣。還有long的位元組數不一樣,其他都一樣。

32位編譯器:跟編譯器有關。

char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int:  4個位元組

unsigned int : 4個位元組

float:  4個位元組

double: 

8個位元組

long: 

4個位元組

long long:  8個位元組

unsigned long:  4個位元組

64位編譯器:

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int:  4個位元組

unsigned int : 4個位元組

float:  4個位元組

double: 

8個位元組

long: 

8個位元組

long long:  8個位元組

unsigned long:  8個位元組

記憶體分配:堆疊

全域性(靜態儲存區)存放全域性變數和靜態變數。包括data段(全域性初始化區)和bbs段(全域性未初始化區)程式結束後由系統釋放。

文字常量區,存放常量字串

程式**區,存放函式體的二進位制**

1.陣列定義中型別不能是引用,即沒有引用陣列,這是因為引用是不能賦值的,而陣列中的元素時可以被賦值。

雖然沒有引用陣列,但是陣列可以引用。  int  (&p)=a    引用必須初始化。

2.函式體外定義的內建型別陣列,初始化為0,函式體內定義的內建型別陣列,元素無初始化,若初始化部分元素,則後面的初始化為0.

3.要動態宣告一維陣列。

int  *a = new  int【n】

釋放   delete   【】a   

4.為了相容c語言,c++所有的字串常量都由編譯器自動在末尾新增乙個空字元null

c風格字串末尾必須有乙個字元\0

包括字串常量和末尾新增了\0的字元陣列

5 c/c++中有很多字串處理函式,傳遞給這些標準庫函式例程的指標必須具有非零值,並且指向儀null結束的字元陣列。

6.在宣告多維陣列時,第一維數字可以省略。

7.陣列在初始化時,用花括號進行多維的賦值,不能用(),否則進入裡面單獨運算,整個表示式的值,是最後乙個表示式的值。

8.int  **a=new  int * [m]

宣告乙個二維陣列,也就是宣告乙個指標陣列。   int *[m]型別是乙個指標陣列型別。

9.const  * p  指標指向乙個常量,指標指向的數值不能通過指標修改。

和* const  p   常量指標。指標儲存的值不能修改

10.指標陣列,是乙個陣列裡面裝著指標。   int  *a[10]  

陣列指標   是乙個指向陣列的指標。   int (*p)[10]

11.char *p= "hello"  p指向的是位於文字常量區的字串,是不允許修改的,修改也不知道改什麼地方。

12.陣列的首位址是常量,不可以變更。不能對首位址a進行一些加減操作。

13.再次理解二位陣列

int a[4][5]

a是包含四個元素的陣列,每個元素都是由5個整數組成的陣列。

&a 表示陣列的首位址。型別為   int(*)

a 型別為 int *  a為指向陣列a第0個元素 a[0]的指標。

*a或a[0] 型別為int *           指向  陣列a[0]的首元素a00 的指標。

14 .在考察多級指標的時候,一定要明確指標指向的是什麼,才能知道它加1後跳過多少位元組。

int  a[2][3][4]

則&a的型別是     int  (*&a)

顯然  &a的型別是  int  (*)[2][3][4]   加1則相當於跳過整個陣列。

15.線性表是一種邏輯結構。

順序表和煉表是一種儲存結構。

線性表中元素的位序是從1開始的,而陣列中元素的下標是從0開始的。

16.對稱矩陣的壓縮,要包括對角線,及對角線以上的元素。

17.只有巨集替換來定義陣列的長度。

18.int在64位系統中佔4個位元組。

19.陣列中乙個數字的出現超過了陣列長度的一半,請找出這個數。

解答:這個數字出現的個數大於其他全部出現個數之和。

如果每次刪除兩個不同的數的話,最後剩餘的一定是那個數字。

a.初始化,設當前的陣列為data,陣列的長度為n,current=data[0];curretnum=1

b.設定i,遍歷整個陣列。

c.當下乙個data[i]與current相同時,就將currentnum++,就是把這個數字的個數加1.

d如果不同,則currentnum--,如果數字刪除乾淨,則current=當前的data[i]

e當i=資料長度時,就輸出current,如果不等於就繼續i++;

(這裡最壞的情況,是每個數都與那個數進行一次比較,但是仍舊是那個數剩下,其他情況,當然也是他剩下。

如果這個數減少到0的話,就換成下乙個數。之前的數因為比較過了,就相當於刪除掉了)

面試筆記1

今天開始準備找實習了,開始準備實習的東西了。接下來開始寫今天看到的小知識。1.宣告,定義,初始化 宣告是指extern int i 定義是指int i 初始化int i 0 區別在於,宣告不分配儲存空間,在這裡編譯的時候是不管的,只有當需要用到i的時候才去檢查。定義的話,就分配一塊空間給它。初始化的...

面試筆記 1

實際上,可以將logistic regression看做是僅含有一層神經元的單層的神經網路。一般用於二分類網路,線性可分的情況,是乙個線性模型,啟用函式sigmoid。logistic regression的乙個優點是logistic cost function 是乙個凸函式,可以求得全域性最小值,...

面試筆記1(找出陣列中重複的數字)

1 在乙個長度為n的陣列裡的所有數字都在0 n 1的範圍內,陣列中某些數字是重複的,但不知道有幾個數字重複了,也不知道每個數字重複了幾次。請找出數字中任意乙個重複的數字。例如,如果輸入長度為7的數字,那麼對應的輸出是重複的數字2或者3.程式 bool duplicate int numbers,in...