1设计函数 int atoi(char *s)。
注意:不要忘记了数字的符号
#include<iostream>
using namespace std;
int atio1(char *s)
{
int sign=1,num=0;
if(*s=='-')
sign=-1;
s++;
while((*s)!='{content}')
{
num=num*10+(*s-'0');
s++;
}
return num*sign;
}
int main()
{
char *s="-123567890";
cout<<atio1(s);
system("pause");
}
2.int i=(j=4,k=8,l=16,m=32); printf(“%d”, i); 输出是多少?
是32 注意:逗号表达式的值是最后一个表达式的值
3.解释局部变量、全局变量和静态变量的含义。
局部变量是指具有局部作用域的变量,只有所在模块(子程序,函数,函数中的某个代码段)可以访问。
全局变量是指具有全局作用域的变量,整个程序文件都可以访问。
静态变量在它所属的除范围之外没有作用域,但是还有存活期,在这一期间变量能够保持它们的值。
4.解释堆和栈的区别。
4.1 在内存管理领域:
堆是为程序保存的一块内存区域,用来保存那些在运行时才知道其存在与大小的数据;
程序能够从堆中分配内存给这些元素;在用完之后,应该释放掉这些内存。
堆中所有的的东西都是匿名的----不能按名字直接访问只能通过指针间接的访问。
栈是为程序保存的一块内存区域,用来保存状态数据,例如:过程或函数的地址,参数,有时候还包括局部变量。
所以,堆和栈的区别:
l 一个是动态,一个是静态;
l 堆是在程序运行时动态分配的,而栈的分配是编译完后,就确定了;
l 栈内存的分配和回收,系统自动进行了,而堆上分配和回收的内存,需要在编程中编码进行。
malloc , new分配的内存就是在堆上的,如果不用free, delete回收,就会造成内存泄漏(垃圾),不过,一般操作系统会在整个程序(进程)退出时, 回收分配给这个进程的内存等资源。
4.2 在数据结构领域。
堆通常是指具有类似二叉树结构的一种结构,它的父节点比它的子节点都大(或者都小),由此形成了大顶堆(小顶堆)。它的子结构有形成又是一个堆。
栈在数据结构领域是指限定只能在表的一段进行插入和删除操作的线性表。
5.论述含参数的宏与函数的优缺点。
使用宏的优点:程序中的宏可以直接把代码插入到程序中,从而避免了函数调用的开销,同时,宏的命名是有意义的,保证了程序的可读性。
使用宏的缺点是:当宏的参数在宏中多次使用时,参数会被多次计算赋值;同时,如果宏很大,或者存在多个宏的嵌套,宏的展的开销会变大,程序会变很长。
使用函数的优点和缺点就是使用宏的缺点和优点对应,不在赘述。另外,函数的另外一个优点是将独立共用的功能从程序中独立出来,有利于软件工程的实施。
通常,在函数功能简单,参数重用不多,代码很少的情况下使用宏来代替函数。
宏和函数都有优点和缺点,并且形成了一对矛盾,他们的折衷方案是使用内联函数。