❶ 程序有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,这时候最好用子过程。