(1)设计函数intatoi(char*s)。(2)inti(j4,k8,l16,m32);printf(“%d”,i);输出是多少?(3)解释局部变量、全局变量 (1)设计函数 int atoi(char *s)。 (2)int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少? (3)解释局
(1)设计函数 int atoi(char *s)。
(2)int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
(3)解释局部变量、全局变量和静态变量的含义。
(4)解释堆和栈的区别。
解答:(1)
(2)逗号表达式,i=32;
(3)定义在函数里的就是内部变量,其作用域就是本函数范围,又被称为局部变量。局部变量被存储在栈区;定义在函数外的是外部变量,作用域从定义时刻开始到程序运行结束。如果外部变量在程序一开始就被定义,一直作用到程序结束。外部变量又被称为全局变量,被存储在内存的全局数据区里。给变量冠以static,变量就是静态变量。静态变量采用静态存储方式,在定义时就已分配好内存,程序运行过程中不会改变。静态变量只在本源文件内有效。
(4)堆(Heap)、栈(Stack)
堆由程序员分配,C语言中用malloc函数,C++中用new函数,堆区在内存区,而内存区是向高地址位扩展的不连续区域。如果程序员在程序结束时没有人工释放内存,OS会自动会回收内存。
栈由编译器分配,栈是向低地址位扩展的连续内存区域。先入栈的是待执行的下一条指令,接着是参数(从右往左依次),最后是局部变量。栈的分配速度较快。