定义一个栈,可以对栈进行“压入堆栈”、“d出栈顶元素”、“清空堆栈”、“获取栈顶元素”等 *** 作

定义一个栈,可以对栈进行“压入堆栈”、“d出栈顶元素”、“清空堆栈”、“获取栈顶元素”等 *** 作,第1张

我不得不说你这代码存在很多的问题:

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(即地址)指向栈中的值,这也是为什么,保存在堆中的变量被称为引用类型,因为当你访问一个引用类型的变量时,首先是访问它的地址,然后通过引用才能访问到该变量的值。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/yw/11350769.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存