vb 参数传递问题 20
<%dimnmnm=request("mm")setrs=server.createobject("ADODB.recordset")sql="select*fromne...
<%
dim nm
nm=request("mm")
set rs=server.createobject("ADODB.recordset")
sql="select * from new where BigClassName="&nm& "order by updatetime desc"
rs.open sql,conn,3,3
if rs.eof then
response.write "没有新闻"
response.End()
else
%>
<table width="90%" border="1">
<%
dim m,n,I
nm=request("mm")
if not rs.eof then
rs.pagesize=2 '定义一页显示的记录数目
pagesize=rs.pagesize
tatalrecord=rs.recordcount '获取记录总数目
tatalpages=rs.pagecount '获取分页的数目
rs.movefirst
nowpage=request("page") '用request获取当前页数,注意page是自己定义的变量并非函数
if nowpage&"x"="x" then '处理页码为空时的情况
nowpage=1
else
nowpage=cint(nowpage) '将页码转换成数字型
end if
rs.absolutepage=nowpage '将指针移动到当前显示页的第一条记录
do while not rs.eof and pagesize>0
%> 展开
dim nm
nm=request("mm")
set rs=server.createobject("ADODB.recordset")
sql="select * from new where BigClassName="&nm& "order by updatetime desc"
rs.open sql,conn,3,3
if rs.eof then
response.write "没有新闻"
response.End()
else
%>
<table width="90%" border="1">
<%
dim m,n,I
nm=request("mm")
if not rs.eof then
rs.pagesize=2 '定义一页显示的记录数目
pagesize=rs.pagesize
tatalrecord=rs.recordcount '获取记录总数目
tatalpages=rs.pagecount '获取分页的数目
rs.movefirst
nowpage=request("page") '用request获取当前页数,注意page是自己定义的变量并非函数
if nowpage&"x"="x" then '处理页码为空时的情况
nowpage=1
else
nowpage=cint(nowpage) '将页码转换成数字型
end if
rs.absolutepage=nowpage '将指针移动到当前显示页的第一条记录
do while not rs.eof and pagesize>0
%> 展开
1个回答
展开全部
给你解释下址传递和值传递
地址传递:就是把一个内存地址内的数据分别给多个变量使用.
就相当于一个人有两个名字(比如这人叫"A","B"),那么我叫A和叫B的结果都是一个样也就是我叫的都是同一个人,只是我的叫法不一样了,那么假如我说原来A有1个苹果,我给了B2个苹果,那么结果问A现在有几个苹果.因为A和B是同一个人,我给A和给B都是达到了同样的目的,那么答案肯定是3个当然结论就是"只要其中一个有了变化,那么另一个也随之变化.
数值传递:
数值传递则没有这样共用一个内存地址.他只是把形参的数据复制给实参,他们分别用了两个地址存放数据.同样用A和B来举例.A有1个苹果,现在我让B等于A(注意我是复制,而不是说现在B也是A),然后我在给B 2个苹果,那么现在A还是有1个苹果,而B有3个.因为我给的是不同的两个人所以后面的人和前面的互不影响.
再来看你的这题
先说明因为你这个程序里的XYZ没有定义为过程级以上的变量,所以两个过程中的XYZ若不经过传递是不会当作一个的,他们互相不干涉.为方便理解行参一律用了X1,Y1,Z1 实参一律用 X2,Y2,Z2.
根据辨别流程图知道X Y为按地址传递,Z为按值传递.
Call sub1(x, y, y) 调用了SUB1过程X1=X2=1,Y1=Y2=2,Z2=Y1=2 前面X1为形参,X2为实参,前面Y1为形参,Y2为实参.
因为过程中的X2Y2是地址传递,也就是说他和形参中的XY相当于同一个人2个名字.过程中的Z2是数值传递,只是把行惨Y1的数据复制给实参Z2. 也就是说X1Y1改变他会导致形参X1Y1变化,而实参Z2的改变不会引起形参Y1变化.
那么过程中:x = 3 * z: y = 2 * z: z = x + y
就是 X=3*2,Y=2*2,Z=X+Y Print 为 X=6,Y=4,Z=10
(注意此时因为实参XY为6和4,所以退出过程后X和Y仍然是X=6,Y=4)
退出过程后的 Print x,y,z
因为Z在程序运行过程中始终没有用到过,SUB1过程里的Z的变化不会对原来的Z=3产生改变,也就是仍然为Z=3
故结果Print x,y,z为: 6 4 3
请参考
地址传递:就是把一个内存地址内的数据分别给多个变量使用.
就相当于一个人有两个名字(比如这人叫"A","B"),那么我叫A和叫B的结果都是一个样也就是我叫的都是同一个人,只是我的叫法不一样了,那么假如我说原来A有1个苹果,我给了B2个苹果,那么结果问A现在有几个苹果.因为A和B是同一个人,我给A和给B都是达到了同样的目的,那么答案肯定是3个当然结论就是"只要其中一个有了变化,那么另一个也随之变化.
数值传递:
数值传递则没有这样共用一个内存地址.他只是把形参的数据复制给实参,他们分别用了两个地址存放数据.同样用A和B来举例.A有1个苹果,现在我让B等于A(注意我是复制,而不是说现在B也是A),然后我在给B 2个苹果,那么现在A还是有1个苹果,而B有3个.因为我给的是不同的两个人所以后面的人和前面的互不影响.
再来看你的这题
先说明因为你这个程序里的XYZ没有定义为过程级以上的变量,所以两个过程中的XYZ若不经过传递是不会当作一个的,他们互相不干涉.为方便理解行参一律用了X1,Y1,Z1 实参一律用 X2,Y2,Z2.
根据辨别流程图知道X Y为按地址传递,Z为按值传递.
Call sub1(x, y, y) 调用了SUB1过程X1=X2=1,Y1=Y2=2,Z2=Y1=2 前面X1为形参,X2为实参,前面Y1为形参,Y2为实参.
因为过程中的X2Y2是地址传递,也就是说他和形参中的XY相当于同一个人2个名字.过程中的Z2是数值传递,只是把行惨Y1的数据复制给实参Z2. 也就是说X1Y1改变他会导致形参X1Y1变化,而实参Z2的改变不会引起形参Y1变化.
那么过程中:x = 3 * z: y = 2 * z: z = x + y
就是 X=3*2,Y=2*2,Z=X+Y Print 为 X=6,Y=4,Z=10
(注意此时因为实参XY为6和4,所以退出过程后X和Y仍然是X=6,Y=4)
退出过程后的 Print x,y,z
因为Z在程序运行过程中始终没有用到过,SUB1过程里的Z的变化不会对原来的Z=3产生改变,也就是仍然为Z=3
故结果Print x,y,z为: 6 4 3
请参考
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询