push的返回值(Javascript 这是哪出问题)

本文目录
- Javascript 这是哪出问题
- 急! C++中stack,pop的操作
- C++结构体和函数的问题
- java 中的栈中的push方法和add方法有什么区别
- 汇编语言两条指令 push ax push ds 执行后结果是什么
Javascript 这是哪出问题
bbr.push(...)就可以了不要将push的返回值再赋值给bbr
因为push的返回值是push操作后的数组长度,是个number类型的数字
你的代码在第一次push之后你接收了返回值并赋值给了bbr,这时候bbr变量变成了一个number类型的数字了不再是数组了,push方法是数组对象才有的方法,数字自然在调用push方法就报错了
急! C++中stack,pop的操作
pop返回值类型是void(error C2440: ’=’ : cannot convert from ’void’ to ’char’明确指出了这一点)。因为如果返回非void类型,返回时会调用复制构造函数,如果其中抛出异常就会在未完成构造的情况下中断且无法简单回滚,无法保证容器的异常安全性,所以在std::stack的设计时就考虑把返回栈顶元素的功能交给其它成员函数实现,这个成员函数的原型是const typename std::stack《T》::value_type& std::stack《T》::top() const;,在std::stack的类作用域内简作const value_type top() const;,其中value_type是元素类型。
因此s2=st.pop(); 是错的。应该使用
s2=st.top();
st.pop();
另外既然使用string,直接用==和!=比较就可以了。
strcmp的原型是int strcmp(const char*, const char*);,不接受string类型的参数,所以产生错误。
或者用string的成员函数c_str得到C风格字符串表示:strcmp(s1.c_str(),s2.c_str())。也可以不用string而用char数组,这样就可以直接strcmp。
↑2011-3-20 20:36。
----
er...才注意到LZ用string而用的是operator是不进行越界检查的(上述除了内置数组外都有成员函数at完成相同功能并会在之前检查是否越界,如果越界抛出out_of_range异常)……而LZ初始化后string自身管理的内存就已经确定了(因为没进行调用会改变内存大小的操作),虽然通常是16字节,但不见得会有保证(取决于模板类std::basic_string的具体实现;这里LZ忘了len++和末尾置零。。。我这里改正之后还是有问题,应该就是这个原因)。对于string还是直接用+=在末尾增加内容比较好,如果内存不够用会自动分配,而且也比较直观。
如果一定要用最好自己用数组或者指针分配空间。
改好的代码(只看第二个while循环就行):
#include 《iostream》
#include 《string》
#include 《stack》
using namespace std;
int main()
{
int len=0;
string s1;
string s2;
stack《char》 st;
cout《《"请输入要判断的字符串: ";
cin》》s1;
while(s1!=’\0’)
{
st.push(s1);
len++;
}
len=0;
while(st.size()!=0)
{
s2+=st.top();
st.pop();
}
if(s1==s2)
cout《《"该字符串为一个回文";
return 0;
}
C++结构体和函数的问题
typedef struct Index //结构体类型 包含a,b两个DWORD成员
{
DWORD a;
DWORD b;
}Index;
Index *Ind;
static DWORD WINAPI call(LPVOID Param)
{
void * const p = (void *)0x45992C; // 调用函数的入口地址
__asm
{
PUSHAD // 保存所有寄存器
push //压入Param的a成员
push //压入Param的b成员
push 0x00E2FE40 //压入整数
CALL p // 调用0x45992C
POPAD // 恢复所有寄存器
}
return 0;
}
---
注意这个程序不完整所以不可能正常执行。
这个程序的问题。首先CALL的目标地址是写死的常数,这个正常情况下肯定不行。另外用了很多windows.h里的类型。
java 中的栈中的push方法和add方法有什么区别
这两个方法最大的区别就是返回值不一样,在作用上基本没有区别。 add是实现List接口重写的方法,返回值为boolean。 addElement是Vector类中的特有方法,返回值是void
汇编语言两条指令 push ax push ds 执行后结果是什么
程序加载后,DS存放着程序所在内存的段地址,这个内存区域的前256个字节存放在的是PSP。
PSP:程序段前缀,是DOS操作系统在执行程序时为程序所建立的一个信息块, 里面包括了传递给待运行程序的命令行参数, 程序运行结束时返回DOS所需的地址等有用的信息.
汇编程开始时
push ds
sub ax,ax
push ax 这三条语句是为后面的ret做准备,ret即执行pop ip, pop cs,执行完ip的值为0,cs的值为ds。程序转移到程序PSP的起始地址,起始地址的前两个字节放的是int 20指令,用于返回DOS。
不过不推荐这样做,现在常用
mov ax 4c00h
int 21h;终止程序,返回值为al.

更多文章:
怎么看有没有装jdk(在windows系统下怎么查看有没有安装jdk)
2025年11月1日 17:15
websocket浏览器兼容(websocket怎样兼容ie8)
2025年5月24日 04:30
excel乘法函数怎么输入(excel表格函数乘法 excel表格里如何乘法函数公式)
2025年8月8日 11:45
苏州公司网站设计(苏州网站建设流程是什么苏州专业网站策划哪家最好)
2025年8月26日 05:15
constructed environment翻译(翻译下面这段文字)
2025年9月26日 03:00
java字符串截取后两位(JAVA截取所有指定字符后面的字符串)
2025年12月5日 23:15
墨迹天气插件(vivo手机的桌面插件在哪里能找到,我安装墨迹天气,设置桌面时钟,都不知道装在哪)
2026年6月5日 02:15
excludefrom的用法(excluded from boot order什么意思)
2026年3月26日 11:45
intellectual enjoyment翻译(英语翻译一下这段话哦)
2026年4月28日 00:15














