发布网友 发布时间: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就是一开始设置的栈的容量(就是栈里可以放几个元素)。这样比较就表示如果栈里放的元素的数量大于栈的容量就表示栈满了。