❶ 程序有BSS段,程序段,代碼段,堆和棧。那麼它們什麼是放在堆裡面的,什麼是放在棧裡面的呢
高級語言里邊,比方C++,堆里邊存放你動態分配的變數,比方用malloc或new函數。程序自動分配的棧不是你能利用的,而是程序自身用它來存放一些函數參數啊,臨時變數啊,返回地址什麼的。如果你想在程序中用到棧,那麼就得自己定義棧的結構,也可以用標准庫中的vector,差不多就是個棧,先進後出嘛。在C++里邊,堆內存用的地方很多,棧么……
當然,如果你是寫匯編語言的,那麼棧段就是經常用到的了,因為得手動保存臨時變數什麼的,堆反而用的不是很多……
❷ 這個程序段的作用或是什麼意思
M N賦初值為0
循環10次
每次輸入任意字元,轉換成數值後並賦給x,如果x大於0,M+x只之和賦給M;如果x小於0,則將N+1之和賦給N
循環結束後,輸出M和N的值
❸ C語言中gets()函數和getchar()函數什麼區別 在這個程序段中,有什麼用
區別:
1、gets讀一行,getchar()讀一個字元。
函數原型:
char * gets(char * ptr);
int getchar(void);
2、函數用法:
1)gets()用於從標准輸入流stdin讀入一個整行(以'\n'或EOF)結束,寫入ptr指向的字元數組,並返回這個指針;出錯或遇到文件結束時則返回NULL。行末的'\n'從流中取出,但不寫入數組。gets()不檢查被寫入的數組大小。
2)getchar()用於從標准輸入流stdin讀入一個字元,並返回這個字元。如果讀到文件結尾,則返回EOF。注意到EOF不能用char類型表示,所以getchar()函數返回的是一個int型的數。使用時也應該注意這一點。
這個函數中的作用:
這個程序在輸入name[i]前,用getchar()把之前scanf("%d",&num[i]);中,輸入整數後按的回車鍵給讀走,否則這個回車鍵會導致gets直接讀到一個空字元串。
❹ 試分析下面的程序段完成什麼功能
程序實現了兩個數的相加
mov al 05 al=5
shl al 1 al邏輯左移1位
mov bl al 將al中的值送到bl中
mov cl 2 cl=2
shl al cl al邏輯左移cl(即2)位
add al bl 把al和bl相加
❺ 進程式控制制塊,數據段,程序段各自在內存的什麼地方
進程式控制制塊(PCB)在系統內存中,可以和其他進程同步執行
數據段存在靜態內存,用於保存程序已經初始化的變數
代碼段緊接著數據段,也在靜態內存中
另外還有保存局部變數的棧和保存動態分配空間的堆
在內存中它們如下關系:
========高地址 =======
程序棧 堆棧段
向下增長
空內存
向上增長
堆
------ 數據段
BSS
------
非零數據
========= =======
代碼 代碼段
========= =======
=========低地址 =======
棧(存放著局部變數和函數參數等數據),向下生長 (可讀可寫可執行)
堆(給動態分配內存是使用),向上生長 (可讀可寫可執行)
數據段(保存全局數據和靜態數據) (可讀可寫不可執行)
代碼段(保存代碼) (可讀可執行不可寫)
❻ 程序段的功能是什麼
將 A 和 B 壓入堆棧,再彈出堆棧。
這個執行之後,A 和 B 就互換了。因為壓和彈的次序要反過來的。
補充回答:
功能就是互換 A 和 B 的值。哎呀,功能就是功能,非要取個名字幹啥...知道就行了。取名字也不唯一,隨你怎麼叫
❼ 指出下述程序段的功能是什麼
1. while ( ! StackEmpty (&S1)){...} 第一次循環,將棧S1中所有的元素出棧,並放入棧tmp中
2. while ( ! StackEmpty (&tmp) ){...} 第二次循環,將tmp中的元素出棧,並分別放入棧S1和S2中
執行完兩次循環後,S1和S2中元素一樣,並且和初始的S1中的元素順序一致,tmp依然為空,所以整個這段代碼完成的功能就是把S1中的元素拷貝到S2中去。
❽ 匯編語言中數據段和代碼段分別什麼意思干什麼用的用什麼字元表示。
代碼段就是放代碼的地方,數據段就是放數據的地方。
當然這只是個模糊的標准,在8086下是可以在代碼段放數據的,但在windows保護模式下就不行了,如果在代碼區定義數據的話,這個數據在默認情況下是不可讀和不可寫的。
在8086下,所謂段對應的是段寄存器,每個段在某一時刻都可能有一個段寄存器與之對應,比如CS對應代碼段,DS對應數據段。
(8)程序段有什麼用擴展閱讀:
機器語言:
計算機的硬體作為一種電路元件,它的輸出和輸入只能是有電或者沒電,也就是所說的高電平和低電平,所以計算機傳遞的數據是由「0」 和「1」組成的二進制數,所以說二進制的語言是計算機語言的本質。
計算機發明之初,人們為了去控制計算機完成自己的任務或者項目,只能去編寫「0」、「 1」這樣的二進制數字串去控制電腦,其實就是控制計算機硬體的高低電平或通路開路,這種語言就是機器語言。直觀上看,機器語言十分晦澀難懂。
❾ 什麼是程序段呢
我的理解很簡單,就是一段程序(可以是一個子過程SUB,一個函數FUNCTION(用面向對象的觀點或稱為方法))
程序都是從上到下施行的,那應該怎麼時候用到程序段
以ASP為例
第一種:
<%
if 條件 then
response.write "2"
response.write "5"
response.write "4"
response.write "2"
response.write "1"
response.write "2"
response.write "3"
else
response.write "else"
end if
%>
第二種:
<%
if 條件 then
call isdo '調用子過程
else
response.write "else"
end if
sub isdo
response.write "2"
response.write "5"
response.write "4"
response.write "2"
response.write "1"
response.write "2"
response.write "3"
end sub
%>
這兩種的施行結果是一樣的,但是第二種代碼顯的直觀很多,可讀性強。因為你中間的代碼如果不止這些比這多得多的話,讀程序的人就很難找到ELSE,這時候最好用子過程。