1. 匯編語言 怎樣向內存中寫入數字
(抱歉!未進入此主帖時,僅見到題目,是向內存寫入數據,未見到要求寫入100個數據,我以下的解答是就寫入1個數據的兩種方法舉例,未符合原題目的全部要求。)
[方法一] 在數據段中定義數據,例如:
DATA SEGMENT
ORG 100H
DAT1 DB 18H ;將數據18H寫入數據段偏移址為100H的內存
DATA ENDS
;
[方法二] 在代碼段中用數據傳送指令,例如:
CODES SEGMENT
ASSUME CS:CODES
START:
MOV AL, 25H
MOV [200],AL ;將AL中的數據25H寫入數據段偏移址為200H的內存單元
;......
CODES ENDS
END START
2. 下面程序調用getone函數開辟一個動態存儲單元,調用assone函數把數據輸入此動態存儲單元。。。
*s=( ① )malloc(sizeof(int));
這個是強制轉換。 目標類型是*s的類型。 s是int**, 所以*s是int*
四個選項中,每個都可以的。 多一層括弧不影響結果。
scanf("%d", ② );
輸入語句。 由於s已經是地址, 所以這里直接用s就好。
這時已經可以確定是選項B正確了。
printf("%d\n", ③ );
輸出的要是值,也就是int型。 參數b是int *指針, 所以這里填*b
選B
3. 學通C語言487中線性表結點存儲單元
1、結構體
2、兩個,分別用於指向該節點的前驅節點和後繼節點
3、malloc函數開辟存儲單元,free函數釋放存儲單元
4、在內存的動態存儲區中分配n個長度為size的連續空間,函數返回一個指向分配起始地址的指針;如果分配不成功,返回NULL,calloc在動態分配完內存後,自動初始化該內存空間為零,而malloc不初始化,里邊數據是隨機的垃圾數據。
4. 內存只為變數開辟存儲單元嗎對整型常量也開辟嗎
常量一般放入只讀數據段,和可執行代碼段挨著放,也可能直接存在於匯編指令中。
開辟存儲單元看怎麼理解,如果程序在內存中運行,也可以說成要開辟。
如果是小的單片機,程序在flash中,變數在內存中,就不需要開辟。
5. 單鏈表存儲不需要手動分配存儲空間
對以單鏈表為存儲結構的表實現就地逆置。即在原有空間上實現逆置,不開辟新空間。
單鏈表是一種鏈式存取的數據結構,用一組地址任意的存儲單元存放線性表中的數據元素。鏈表中的數據是以結點來表示的。
每個結點的構成:元素(數據元素的映象) +指針(指示後繼元素存儲位置),元素就是存儲數據的存儲單元,指針就是連接每個結點的地址數據。
單鏈表是用戶不斷申請存儲單元和改變鏈接關系而得到的一種特殊數據結構,將鏈表的左邊稱為鏈頭,右邊稱為鏈尾。頭插法建單鏈表是將鏈表右端看成固定的,鏈表不斷向左延伸而得到的。頭插法最先得到的是尾結點。
由於鏈表的長度是隨機的,故用一個while循環來控制鏈表中結點個數。假設每個結點的值都大於O,則循環條件為輸入的值大於o。申請存儲空間可使用malloc()函數實現。
需設立一申請單元指針,但malloc()函數得到的指針並不是指向結構體的指針,需使用強制類型轉換,將其轉換成結構體型指針。剛開始時,鏈表還沒建立,是一空鏈表,head指針為NULL。
6. 【求助】UF_CURVE_offset_data_p_t數據類型該如何開辟存儲單元
感覺UF_CURVE_offset_data_s只是系統定義時使用,我們一般用的是UF_CURVE_offset_data_t
和UF_CURVE_offset_data_p_t
7. C程序中如何使用堆棧
先從大家比較熟悉的棧說起,它是一種具有後進先出性質的數據結構,也就是說後存放的先取,先存放的後取。這就如同要取出放在箱子裡面底下的東西(放入的比較早的物體),首先要移開壓在它上面的物體(放入的比較晚的物體)。而堆就不同了,堆是一種經過排序的樹形數據結構,每個結點都有一個值。通常所說的堆的數據結構,是指二叉堆。堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆。由於堆的這個特性,常用來實現優先隊列,堆的存取是隨意,這就如同在圖書館的書架上取書,雖然書的擺放是有順序的,但是想取任意一本時不必像棧一樣,先取出前面所有的書,書架這種機制不同於箱子,可以直接取出想要的書。
下面就說說C語言程序內存分配中的堆和棧,這里有必要把內存分配也提一下,一般情況下程序存放在Rom或Flash中,運行時需要拷到內存中執行,內存會分別存儲不同的信息。
內存中的棧區處於相對較高的地址以地址的增長方向為上的話,棧地址是向下增長的,棧中分配局部變數空間,堆區是向上增長的用於分配程序員申請的內存空間。另外還有靜態區是分配靜態變數,全局變數空間的;只讀區是分配常量和程序代碼空間的;以及其他一些分區。來看一個網上很流行的經典例子:
main.cpp
int a = 0; 全局初始化區
char *p1; 全局未初始化區
main()
{
int b; 棧
char s[] = "abc"; 棧
char *p2; 棧
char *p3 = "123456"; 123456\0在常量區,p3在棧上。
static int c =0; 全局(靜態)初始化區
p1 = (char *)malloc(10); 堆
p2 = (char *)malloc(20); 堆
}
堆和棧的第一個區別就是申請方式不同:棧(英文名稱是stack)是系統自動分配空間的,例如定義一個 char a;系統會自動在棧上為其開辟空間。而堆(英文名稱是heap)則是程序員根據需要自己申請的空間,例如malloc(10);開辟十個位元組的空間。由於棧上的空間是自動分配自動回收的,所以棧上的數據的生存周期只是在函數的運行過程中,運行後就釋放掉,不可以再訪問。而堆上的數據只要程序員不釋放空間,就一直可以訪問到,不過缺點是一旦忘記釋放會造成內存泄露。
8. 常用的存儲表示方法有哪幾種
摘要 數據結構的存儲方式有順序存儲方法、鏈接存儲方法、索引存儲方法和散列存儲方法這四種。
9. C語言在函數中開辟的存儲單元問題
編譯器總是要為函數的每個參數製作臨時副本,指針參數p的副本是 _p,編譯器使 _p = p。如果函數體內的程序修改了_p的內容,就導致參數p的內容作相應的修改。這就是指針可以用作輸出參數的原因。
這里只是把t和h所對應的副本_t和_h所指的內存地址改變了,但t和h卻絲毫沒變.如果非得要用指針參數去申請內存,那麼應該改用「指向指針的指針」.
10. 如何用原子來存放數據
關於原子是怎麼來存放數據的,我在剛才的問題里就有做了詳細的解釋,如果有興趣的話可以到我的那個問題裡面去看一下,那麼題主的這個問題,我通過另外一種方式來解答一下吧。
一、關於原子存放數據的新聞。
我在最近的一個新聞里看到講原子存儲單元面試的消息,內容主要是這樣子的,說美國的科學家現在研製出了起定為止最小的一個存儲設備,它的橫截面積就只有一平方納米,同時容量提高到了大約25兆比特每平方厘米,而這樣的一個程度和目前的存儲密度晶元相比,提高了大約100倍,非常的誇張。