
1.初试化栈的时候没有初始化栈底元素,这样导致这个变量全文就没用到。
2.scanf用法错误,scanf("%d",e)少了&符号。
3.str是一个字符型,不能存下字符串,如需用到,应该是char *strstr = malloc(100)最后释放空间。
4.初始化栈的功能不是消灭栈空间,clear这错误。这应该为free掉申请的栈空间。
5.exit,top等等不是字符,而是字符串。应用“”。如果想是字符应该只有一个字符。如‘E’,‘T’代表“exit”,和“top”.
6.字符串的比较用strcmp或者strncmp函数,字符之间才可以用=。
7.小问题:函数写了int的返回值后,应该每个分支都能有返回值才不会有警告。
也许还有没看见的,你可以自己再慢慢调试一下吧
栈当中存放的是值类型,如int,decimal,double,enum等
堆当中存放的是引用类型,如string,类等
如图,如果定义一个int类型的变量i:
int i = 5那么在内存中的实际情况是:直接在栈中存放i的值5.
如果顶一个string类型的变量s:
string s = "A string."那么在内存中的实际情况是:在堆中存放s的变量名(即地址),在栈中存放s的值"A string.",然后让堆中的变量名s(即地址)指向栈中的值,这也是为什么,保存在堆中的变量被称为引用类型,因为当你访问一个引用类型的变量时,首先是访问它的地址,然后通过引用才能访问到该变量的值。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)