新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
C返回局部变量的值也没问题啊
公司主营业务:网站建设、成都做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联公司推出共和免费做网站回馈大家。
只是如果这个局部变量是指向栈上的内存的指针,由于函数结束后活动栈被清空,会导致指针失效。
VB.NET不支持指针语法,它不可能返回指向栈上的指针,所以用不着担心这个问题。
你的理解
第一点理解是正确的,不过和这个问题关系不大。因为引用类型本来就不是分配在栈上的,它当然就不受函数的影响。
第二点,那个只是个语法问题。VB6没有Return语句,所以它必然有另外一种语法来表明函数的返回值。这个和函数能否返回正确的对象没有关系,就是一种表明函数返回值的语法。
编译器确实定义了一个和函数同名的变量,那个变量就是一个普通的局部变量,作用域就在函数的局部域里。这个变量没什么特别的,就是编译器会在函数结束时把这个变量的值作为函数的返回值返回而已。
有两种方法:
1.用Right函数,从字符串右边取出的指定数量的字符.
Right(string,
length)
取最后一位
A
=
"ABC123"
D
=
RIGHT(A,1)
取最后二位
D
=
RIGHT(A,2)
取最后第二位
D
=
RIGHT(A,2,1)
2.用MID函数
返回
Variant
(String),其中包含字符串中指定数量的字符。
语法
Mid(string,
start[,
length])
此发先要用LEN函数确定字符串长度,然后才能确定起始位,例:
A
=
"ABC123"
取最后一位
D
=
MID(A,LEN(A),1)
取最后二位
D
=
MID(A,LEN(A)-1,2)
取最后第二位
D
=
MID(A,LEN(A)-1,1)
后一种在取每位字符时配合FOR
NEXT循环更有用.
自己做个试验就行了:
Public Class Form1
' 在窗体上放个 Label1
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Lable1.Text = "KeyCode= " e.KeyCode.ToString vbCrLf
Lable1.Text = "KeyData= " e.KeyData.ToString vbCrLf
Lable1.Text = "KeyValue= " e.KeyValue.ToString
End Sub
End Class
运行起来,自己按键盘试试就知道了。
1、我有一个function,如下:
function b()
'...
return "abc"
end function
2、调用时,这样子用:
Response.write(b());
3、运行结果:
abc