以下两种写法那个 好?????????????
int funA()
begin
result := 100;
end;int funB()
var
i:int;
begin
i:= 100;
result := i;
end;
int funA()
begin
result := 100;
end;int funB()
var
i:int;
begin
i:= 100;
result := i;
end;
解决方案 »
- 今天面试题:不用循环打印从1-100
- 又一个排序问题:如何能排序后仍能修改记录内容,或者能改变数据库表中记录的实际位置呢?
- 狂散分!!!来者人人有份(分)
- 有難度,說出思路也給分---delphi 調用外部程序執行登陸 下載
- 怎样将QReport的QRCompositeReport控件的尺寸适应我的自定义尺寸报表的尺寸?
- 在线结分!如何得到Access数据库中的所有表名?
- :安装组件的时候在这位置报错误错误提示:
- 如何实现MS SQL SERVER数据表的插入?
- delphi的高手在哪里,我怎么没有见到?
- 调用bitbtn的click事件出错???
- 立象(ARGOX)条码打印机ppla语言怎样打印出ean-13码
- Delphi2007中如何删除选中的行代码?
begin
result := 100;
end;
int funB()
var
i:int;
begin
i:= 100;
result := i;
end;这种写是不是为了以后好扩展,但如果这是这样写也没法扩展啊。
第一种方法 是正确的第二种方法可以说是不安全的 因为 result = 局部变量
局部变量的作用域是当前函数 所以在函数外部很可能是是一个无效的地址或者值
没看出来孰优孰劣
如果你遇到 上面无聊的的东西产生bug 你就不感觉无聊了
但是你举的例子实在太缺乏说服力了#include <iostream>
using namespace std;char* test1()
{
char a[] = "test";
return a;
}char* test2()
{
char* a = NULL;
a = "test";
return a;
}char* test3()
{
return "test";
}int main(void)
{
cout<<test1()<<endl;
cout<<test2()<<endl;
cout<<test3()<<endl;
return 0;
}第一个输出乱码, 就是你要的效果吧
test1 返回的是局部变量 出错test2 返回的是指针 正确test3 返回是常量 这个 正确char* test1()
{
char a[] = "test";
return a;
}char* test2()
{
char* a = NULL;
a = "test";
return a;
}char* test3()
{
return "test";
}上面的解析 是对
-------------------
这都什么解释啊
建议你好好去看下C++ PRIMER,
真是让人气愤。用delphi 而不知道 Pascal。我看啊,你可以去重新学习啦。先搞清楚谁是谁吧!!!!!!!!!!!!!!!!!!!!
个人建议用第二种吧!
因为如果你业务逻辑复杂可能没有给result赋上值的话,result会返回上一次result的值,result一般就是指寄存器A 。最好在程序开始赋初值。。