2023年6月問題彙總

2021-10-07 06:24:26 字數 1715 閱讀 4453

目錄

c語言1. memset函式的使用總結。

1)對陣列的初始化

2)對指標所指空間的初始化

3)對結構體的初識化

【注意】:

2. malloc函式的使用總結。

嵌入式1. rom、ram、flash的區別。

2. 如何外擴儲存器?(dsp2812)

memset函式原型如:

void *memset(void *s, int ch, size_t n);
函式功能:將s所指向的某一塊記憶體中的前n個位元組的內容全部設定為ch指定的ascii值。

這個函式通常為新申請的記憶體做初始化工作, 其返回值為指向s的指標。

常見作用:①結構體②陣列的清零。通常初始化為0或者字元'\0'

標頭檔案:或

下面為使用例程:

// 例1:整形陣列初始化

int a[10];

memset(a, 0, sizeof(int) * 10);

// 例2:字元陣列初始化

char ch[10];

memset(ch,'\0', sizeof(char) * 10);

結構體的初始化與陣列的初始化類似。

struct sample_struct

;struct sample_strcut sttest;

memset(&sttest,0,sizeof(struct sample_struct));

//而一般初始化

sttest.csname[0]=』/0』;

sttest.iseq=0;

sttest.itype=0;

①第乙個引數一定要是乙個已知的、已經被分配記憶體的位址,否則會出錯。

②第三個引數一定使用sizeof操作符,而不要人為計算填值,因為每個系統下對型別長度的定義可能不一樣,得到的長度也就有所差異。

③memset函式是按照位元組初始化,如果單位元組型別空間,可以任意賦初值,比如char型陣列,而對於多位元組型別空間,只能初始化為0,不然將會出現初值錯誤(位元組組合起來,能與理想的一樣嗎?)比如int型(32位,4位元組)初值1對應32位16進製制0x00000001,而實際拼接起來為0x01010101對應的十進位制數(具體多少我就不算了)

rom:唯讀儲存器。用來儲存和儲存資料,斷電資料也不會丟失

ram:與cpu直接交換資料的儲存器,也叫記憶體。由於隨存隨取,並且讀取速度快,所以通常作為系統或程式的臨時儲存媒介,一般在嵌入式中可以分出一部分來作為暫存器使用。但是斷電即資料丟失。

flash:結合了rom與ram的優點,可以隨處隨取,斷電資料也不丟失,但是廣義上還是屬於rom,與rom的區別是擦除時不以位元組為單位,而是以扇區為單位。目前flash

2812有19根位址線和16根資料線,可以外擴

外擴儲存器共有5個區(區0、1、3、6、7),其中區0與區1共用片選,區6與區7共用片選,但是共用片選時如何區分呢?

外擴的19根位址線決定的是偏移位址,即外擴儲存器的大小,其實位址是由片選訊號決定的,乙個片選訊號決定一定區域的片選區。外擴儲存器與內部儲存器可共用,因為不衝突,內部的保留區正好是外部擴充套件區。

2023年6月29日打卡

在未排序的陣列中找到第 k 個最大的元素。請注意,你需要找的是陣列排序後的第 k 個最大的元素,而不是第 k 個不同的元素。本題核心在於排序,本題目前沒有發現排序外的解法,那核心就是如何降低排序的複雜度。氣泡排序可以作為一種解法,但 o n2 的時間複雜度有點不太好,經同學嘗試可以通過。我採用的是c...

2023年7月6日打卡

乙個機械人位於乙個 m x n 網格的左上角 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角。現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m 和 n 的值均不超過 100。原題是有圖的,但是我懶得粘過來,...

2023年9月6日 學習

一 一條sql執行時間過長,你如何優化,從哪些方面?1.檢視sql是否涉及多表的聯表查詢或者子查詢,如果有的話,看是否能進行業務拆分,相關字段冗餘的話合併成臨時表 2.涉及鍊錶的查詢,是否能進行分表查詢,單錶查詢後的結果進行字段整合 3.如果上述兩種方式都不管用的話,非要鍊錶查詢的話,那麼考慮對相應...