为什么计算机会打印出超出帕斯卡字符串范围的值?

问题描述 投票:0回答:1

在Pascal编程语言中,我编写了以下代码

Program practice;
    //**** Function to get back N characters from a P position from a given string

  Function get_char(s1:String;n,p :Integer): String;
 Var
temp : String;
i : Integer;
Begin
temp:= s1[p];
 For i:= p+1 To p+n-1 Do
    temp := temp + s1[i];
get_char := temp;
End;
//**** end of the function *****
Var
  s1,s2: String;
  n,p: Integer;
Begin
    Write('Enter the number of char:');
    readln(n);
    write('Enter the position:' );
    readln(p);
    write('Enter the string : ');
    readln(s1);
    write(get_char(s1,n,p));
Readkey;
End.

知道此函数从字符串的某个位置取回用户给定的一定数量的字符。例如p = 1且n = 2的'hello',结果将是'he'。现在假设p为3且n = 4,则函数的输出为'lloA'。所以我的问题是在这种情况下会发生什么,或者为什么我们会得到这样的结果? (如果它与内存有关,请给我详细信息。)>

我使用Pascal编程语言编写了以下代码编程实践; // ****从给定字符串的P位置取回N个字符的函数get_char(s1:String; n,p:...

pascal freepascal
1个回答
0
投票

当您读取字符串末尾以外的字符时,您将读取恰好位于这些内存位置的内存内容,并将该内存内容解释为字符。超出字符串长度的内存内容未定义,也无法预测。

© www.soinside.com 2019 - 2024. All rights reserved.