五子棋bcb转delphi的问题?(50分)

  • 主题发起人 主题发起人 qhx
  • 开始时间 开始时间
Q

qhx

Unregistered / Unconfirmed
GUEST, unregistred user!
bcb和delphi源程序在wangni.coolgirl.com.cn下载。
delphi程序是我用了一整天把bcb改过来的。问题多多,电脑下的都是昏招,选level2时不停的计算,
停不下来,level3干脆不动了,不过它总算能下棋了!请大家指教。
在五子棋bcb源码中,出现下例语句:
int ch5[26][26]

for(int i=0;i<=26;i++)
for(int j=0;j<=26;j++)
ch5[j]=empty

令人费解,ch5不怕越界?
 
算法有误!
 
>>int ch5[26][26]

>>for(int i=0;i<=26;i++)
>> for(int j=0;j<=26;j++)
>> ch5[j]=empty

>>令人费解,ch5不怕越界?

不会吧!
int ch5[26][26]相当于delphi
var
ch5: array[1..6,1..26] of integer;
 
根据C语言规则,应该相当于
var ch5:array[0..25,0..25] of integer;
 
怎么可能越界???
 
当然越界。C中int ch5[26][26]
下标是0..25。
但C中对越界是不做检查的,所以说C是一种灵活
但不严格的语言。
 
这应该是一个错误,除非在使用前ch5被重新分配了更大的空间。
 
这个应该是错误了。

如果不出错,应该是这个函数、在此地方后没有定义新的本地变量,或者在后面定义的变量
都是在ch5不变化、不使用时后才使用的。(就是说它占用了更低地址的堆栈空间,
不一定会出错)
 
这个应该是错误了。

如果不出错,应该是这个函数、在此地方后没有定义新的本地变量,或者在后面定义的变量
都是在ch5不变化、不使用时后才使用的。(就是说它占用了更低地址的堆栈空间,
不一定会出错)

(特殊的情况下不出错)
 
多人接受答案了。
 
后退
顶部