Su muestra de código carece de información ya que no dice cómo se define function
. Esto significa que no puede sacar las conclusiones que intenta dibujar.
Por supuesto, dado que function
es una palabra reservada en Pascal, ese código nunca podría compilarse. Asumiré ahora que la variable se llama f
.
considerar las siguientes definiciones:
type
sample1 = array [1..80] of integer;
psample = ^sample1;
var
f : array [1..70] of psample;
Aquí, sample1
y psample
son tipos. sample1
es un tipo que describe una matriz de 80 enteros. psample
es un puntero a sample1
.
A continuación se define una variable llamada f
. Es una matriz de 70 psample
s.
Ahora, antes de que pueda siquiera considerar lo que sucede cuando escribe f[1]^[1]
, debemos asignar algunos valores a los elementos de f
.
Supongamos que hicimos de esta manera:
var
sample: sample1;
...
for i := 1 to 70 do
f[i] := @sample;
Ahora bien, sería cierto que f[i]^[k]
se refiere a la misma entero como f[j]^[k]
para todas válidas y i
j
. Por lo tanto, cuando escribe f[1]^[1] := 42
, también está asignando ese valor a f[2]^[1]
, f[3]^[1]
y así sucesivamente.
Por otra parte usted podría hacerlo de esta manera:
var
samples: array [1..70] of sample1;
...
for i := 1 to 70 do
f[i] := @samples[i];
Ahora cada f[i]
puntero apunta a una matriz distinta en la memoria. En este caso, la asignación de f[1]^[1] := 42
no modifica el valor de f[2]^[1]
o cualquiera de los otros valores.
gracias David, es muy útil. –