第二週工作學習總結

2021-07-31 10:31:36 字數 2072 閱讀 1243

第二週工作學習總結

[toc]

本週任務:

完成情況:

學習總結

基礎知識

數字用巨集,不然替換掉的時候不方便;

記憶體分配(對堆的分配);

陣列不等於指標;

用指標儲存字串,實質在於把靜態區的首位址賦值給指標變數;

資料結構內部對齊;

指定位元組對齊;

位元組序之大頭序&小頭序;

字串拷貝與記憶體拷貝(strcpy()函式與memcpy()函式);

溢位與翻轉;

常用函式:數字字元和數值之間的轉換;

當**中多處需要使用同乙個數字時,將其用巨集定義替換,巨集定義為有意義的名稱,以便修改;

對堆記憶體的分配和釋放都需要手動進行,malloc()和free()配對使用,不然容易發生記憶體洩漏;其次,需要對堆進行初始化操作,不然可能會發生指標的越界操作,如同strlen()、strcpy()等函式一樣,找到\0(同數字0)才會截止對字串的操作,因此一般會將以下三個函式作為一套使用:

char* r = (char* ) malloc (max_size);//開闢新的堆記憶體

if(!r)

memset(r,0,max_size);//初始化字串

/對堆記憶體的使用/

free(r);//對廢棄的記憶體進行**

**實質是將該指標變為廢指標(bad pointer),即指向失效。

strlen()和sizeof()的不同

strlen()對字串頭部開始計數,遇到0即停止,而sizeof()函式總是針對型別大小的計算;

指標的大小(32位機)位四個位元組;

關於資料結構內部對齊,舉例如下:(char佔1個位元組,int佔4個位元組,float佔4個位元組,double佔8個位元組)

四位元組對齊時——

struct x;
此時,x型別的sizeof(x)=4+4+8=16 bytes,總共取三次;

而當一位元組對齊時,sizeof(x)=1+4+8=13 bytes

需要位元組對齊的根本原因在於cpu訪問資料的效率問題。我們可以按照自己設定的對齊大小來編譯程式:

#pragma pack (push)

#pragma pack(1)

#pragma pack(pop)

指定1位元組對齊;(網路上傳送資料以1位元組對齊);

關於大頭序和小頭序:

位元組序,指多個位元組的排列順序,大頭序是高位在低位元組,低位在高位元組的排序方式。兩種方式沒所謂好壞,但是若涉及通訊,則雙方需要有統一的通訊規範;在網路中傳輸的都是大端序

大頭:多位元組值的大頭儲存在該值的起始位置;(老大站排頭為大)

小頭:多位元組值的小頭儲存在該值的起始位置;(老小站排頭為小)

例如16bit整數:0x0102,其中01即為多位元組值的大頭,02即為多位元組值的小頭。

關於區域性變數

函式退出後棧自動釋放,所以函式內部的引用變數不可用,比如對某乙個變數的引用;

關於陣列

陣列不等同於指標:陣列名不是指標,陣列名和指標有很大區別,在使用時要進行正確區分。

1.陣列名指代一種資料結構,這種資料結構就是陣列;

2.陣列名可以轉換為指向其指代實體的指標;

3.指向陣列的指標則是另外一種變數型別(在win32平台下,長度為4),僅僅意味著陣列的存放位址;

字串拷貝與記憶體拷貝:

字串拷貝使用strcopy()函式,遇0停止,因此當對一片記憶體區域進行拷貝時,不能用strcopy(),應當用memcpy()。

關於邏輯判斷:

不在判斷分支處進行運算,防止出錯;

使用if(0 == bl)代替if(bl == 0),以防手誤成為賦值操作,邏輯恆「是」。

溢位與翻**

有符號數超過範圍繼續增加或減少稱為溢位,無符號數在超過範圍的區域操作稱為翻轉;

數字字元與數字的轉換:

關於switch() case: 函式: 小結

不能將char型別的值賦值給字串,因為字串為靜態區,不可修改;

動態申請記憶體後記得初始化和釋放;

位元組對齊可以提高cpu效率,網路上傳送資料以1位元組對齊;

第二週學習總結

在本週,學習了物件導向的三大特徵,封裝,多型,繼承 讓我感覺到學習 的不易,基礎實在是很重要,現記錄本週學習過程 現的問題以及解決注釋。1.構造方法與成員方法的區別 成員方法 一般實現對類中成員變數的操作,提供某些功能,有返回值型別,通過物件呼叫!構造方法 一般是給物件的資料進行初始化,沒有返回值,...

第二週學習總結

一 棧和佇列的簡介 先進後出 限定性操作 棧具有後進先出的特性,如果問題解決具有先進後出的天然特性的話,則求解的演算法就要使用棧。先進先出 限定性操作 佇列具有先進先出的特性,如果問題解決具有先進先出的特性的話,則求解的演算法就要使用佇列。二 對棧和佇列的認識 棧 限制在表的一端進行插入和刪除運算的...

第二週學習總結

本週主要學習的是 1棧與佇列 2二分法 3位運算 首先要明白棧和佇列之間的區別,與棧相比佇列是先進先出的,先進去的就會先出來,而棧則與之不同,棧的進出順序與佇列不同並不是先進先出的有序關係,二十順序不定,候後進的可能先出。一般線性表 棧 邏輯結構 一對一 一對一 儲存結構 順序表 鍊錶 順序棧 鏈棧...