首 页 行业热点 新车 试驾评测 养车用车 车型库

栈的容量是指一个栈可以容纳多少个元素吗?

发布网友 发布时间:2022-04-19 23:33

我来回答

5个回答

热心网友 时间:2023-07-17 03:32

就是你这个意思,这里指针相减,得到的是元素个数
假设base是int *base,top自然也是int *top;
开始的时候base分配内存,然后top=base;这时候top-base=0,就是栈为空
如果有一个元素了,则top-base=1

stacksize就是初始化给base的int的个数吧?追问不明白的是 地址相减 1008 - 1000 = 8?
差8个 8是个16进制 stacksize 是个整形 int的
他俩怎么比啊

追答这里指针相减,得到的int的个数
top的地址为1008,base的地址为1000,则top-base=2 2个int单位(2*4字节=8字节)

这个就像int a[10],*p=a;
则p++后p指向了a[1],地址实际上也加了4个字节,但元素跨度就一个

这里指针减法也是一样的道理,得到的不是字节数,而是类型单位的个数

热心网友 时间:2023-07-17 03:33

先减后比较。这是运算符优先级问题。
你说什么地址相减就不知道了,要看具体程序

热心网友 时间:2023-07-17 03:33

你这个S是毛?自己定义的结构体么。。?

热心网友 时间:2023-07-17 03:34

连续的内存地址中,地址相减,得到的是相差的个数。

热心网友 时间:2023-07-17 03:35

s.top和s.base是两个指针,分别指向栈顶和栈底,它们相减的结果就是这个栈里还存放了几个元素。s.stacksize就是一开始设置的栈的容量(就是栈里可以放几个元素)。这样比较就表示如果栈里放的元素的数量大于栈的容量就表示栈满了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com