Function Pascal函数是循环的
为什么这个代码不起作用 当我执行时,windows会停止它,因为可能是循环和停止工作Function Pascal函数是循环的,function,reverse,pascal,freepascal,Function,Reverse,Pascal,Freepascal,为什么这个代码不起作用 当我执行时,windows会停止它,因为可能是循环和停止工作 function revstr(a:string):string; var out_s:string; ls,i:integer; begin ls:=11; for i:=1 to ls do out_s:=out_s+a[ls-i+1]; revstr:=out_s; end; 您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的
function revstr(a:string):string;
var out_s:string;
ls,i:integer;
begin
ls:=11;
for i:=1 to ls do
out_s:=out_s+a[ls-i+1];
revstr:=out_s;
end;
您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素 这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11 最好按照以下方式编写函数:
Function Reverse (const a: string): string;
var
i: integer;
begin
result:= '';
for i:= length (a) downto 1 do
result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作
Function Reverse (const a: string): string;
var
i, j: integer;
P: PChar;
begin
SetLength (Result, Length (a));
P:= Pchar (Result);
j:= 0;
for i:= length (a) downto 1 do
begin
p[j]:= a[i];
inc (j)
end;
end;
您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素 这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11 最好按照以下方式编写函数:
Function Reverse (const a: string): string;
var
i: integer;
begin
result:= '';
for i:= length (a) downto 1 do
result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作
Function Reverse (const a: string): string;
var
i, j: integer;
P: PChar;
begin
SetLength (Result, Length (a));
P:= Pchar (Result);
j:= 0;
for i:= length (a) downto 1 do
begin
p[j]:= a[i];
inc (j)
end;
end;
您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素 这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11 最好按照以下方式编写函数:
Function Reverse (const a: string): string;
var
i: integer;
begin
result:= '';
for i:= length (a) downto 1 do
result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作
Function Reverse (const a: string): string;
var
i, j: integer;
P: PChar;
begin
SetLength (Result, Length (a));
P:= Pchar (Result);
j:= 0;
for i:= length (a) downto 1 do
begin
p[j]:= a[i];
inc (j)
end;
end;
您的临时输出字符串out_s从未初始化。此外,您似乎假设输入字符串的长度为11个字符。如果只有10个字符长会发生什么?然后您将访问一个不存在的元素 这不重要,但“ls”变量不必要。要么将其设置为常量,要么在代码中使用裸值11 最好按照以下方式编写函数:
Function Reverse (const a: string): string;
var
i: integer;
begin
result:= '';
for i:= length (a) downto 1 do
result:= result + a[i]
end;
另一种方法如下所示。这段代码会更快,因为没有字符串连接,但它不太直观,可能只在Delphi中工作
Function Reverse (const a: string): string;
var
i, j: integer;
P: PChar;
begin
SetLength (Result, Length (a));
P:= Pchar (Result);
j:= 0;
for i:= length (a) downto 1 do
begin
p[j]:= a[i];
inc (j)
end;
end;
我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,a中是不同的符号,不是单词…我a没有转移好,因为当我写a时,在一个世界里,是不同的符号,而不是单词。。。