- Problem with pointer semantics

From: [at]} <Gérard>
Date: Mon, 19 Jun 2006 23:27:52 +0200

----boundary-LibPST-iamunique-1965117085_-_-
Content-type: text/plain

Rex Couture a écrit :
> This has to be a pretty standard problem in computer science, and it's not limited to BlackBox. Is there a good way to handle the following ambiguity? The problem is that you don't know by looking at an assignment statement what the results will be.
>
> My own method is pretty ugly: I use Hungarian notation. Please tell me there's a better way. Thanks.
>
> Rex Couture
>
> =====
> VAR
> a, b: POINTER TO ARRAY OF INTEGER;
> x, y: ARRAY 2 OF INTEGER;
>
> NEW( a, 2); NEW( b, 2);
> a[1]:= 1; b[1]:= 2;
> x[1]:= 1; y[1]:= 2;
>
> b:= a;
> y:= x; (* not an equivalent statement *)
>
> b[1]:= 5; (* a[1] = 5 *)
> y[1]:= 5; (* x[1] = 1 *)
>
What is exactly the problem?
a and b contain pointers.Assigning a to b lets the two variables contain
the same pointer and, thus, lets them point to the same array. Thus
changing b (or a) modifies the other too. On the contrary, x and y are
arrays. Assigning one to the other changes just the value of the latter,
but the two arrays remain distinct, and modifying one doesn't modify the
other.
I hope this helps.

Gérard

--- BlackBox
--- send subject HELP or UNSUBSCRIBE to blackbox{([at]})nowhere.xy



----boundary-LibPST-iamunique-1965117085_-_-
Content-type: application/rtf
Content-transfer-encoding: base64
Content-Disposition: attachment; filename="rtf-body.rtf"

e1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZnJvbXRleHQgXGRlZmYwe1xmb250dGJsDQp7XGYwXGZz
d2lzc1xmY2hhcnNldDAgQXJpYWw7fQ0Ke1xmMVxmbW9kZXJuIENvdXJpZXIgTmV3O30NCntcZjJc
Zm5pbFxmY2hhcnNldDIgU3ltYm9sO30NCntcZjNcZm1vZGVyblxmY2hhcnNldDAgQ291cmllciBO
ZXc7fX0NCntcY29sb3J0YmxccmVkMFxncmVlbjBcYmx1ZTA7XHJlZDBcZ3JlZW4wXGJsdWUyNTU7
fQ0KXHVjMVxwYXJkXHBsYWluXGRlZnRhYjM2MCBcZjBcZnMyMCBSZXggQ291dHVyZSBhIFwnZTlj
cml0IDpccGFyDQo+ICAgICAgICAgVGhpcyBoYXMgdG8gYmUgYSBwcmV0dHkgc3RhbmRhcmQgcHJv
YmxlbSBpbiBjb21wdXRlciBzY2llbmNlLCBhbmQgaXQncyBub3QgbGltaXRlZCB0byBCbGFja0Jv
eC4gIElzIHRoZXJlIGEgZ29vZCB3YXkgdG8gaGFuZGxlIHRoZSBmb2xsb3dpbmcgYW1iaWd1aXR5
PyAgVGhlIHByb2JsZW0gaXMgdGhhdCB5b3UgZG9uJ3Qga25vdyBieSBsb29raW5nIGF0IGFuIGFz
c2lnbm1lbnQgc3RhdGVtZW50IHdoYXQgdGhlIHJlc3VsdHMgd2lsbCBiZS5ccGFyDQo+XHBhcg0K
PiAgICAgICAgIE15IG93biBtZXRob2QgaXMgcHJldHR5IHVnbHk6ICBJIHVzZSBIdW5nYXJpYW4g
bm90YXRpb24uICBQbGVhc2UgdGVsbCBtZSB0aGVyZSdzIGEgYmV0dGVyIHdheS4gIFRoYW5rcy5c
cGFyDQo+XHBhcg0KPiBSZXggQ291dHVyZVxwYXINCj5ccGFyDQo+ID09PT09PT09PT1ccGFyDQo+
IFZBUlxwYXINCj4gICAgICAgICBhLCBiOiBQT0lOVEVSIFRPIEFSUkFZIE9GIElOVEVHRVI7XHBh
cg0KPiAgICAgICAgIHgsIHk6IEFSUkFZIDIgT0YgSU5URUdFUjtccGFyDQo+XHBhcg0KPiBORVco
IGEsIDIpOyBORVcoIGIsIDIpO1xwYXINCj4gYVsxXTo9IDE7ICBiWzFdOj0gMjtccGFyDQo+IHhb
MV06PSAxOyAgeVsxXTo9IDI7XHBhcg0KPlxwYXINCj4gYjo9IGE7XHBhcg0KPiB5Oj0geDsgKCog
bm90IGFuIGVxdWl2YWxlbnQgc3RhdGVtZW50ICopXHBhcg0KPlxwYXINCj4gYlsxXTo9IDU7ICgq
IGFbMV0gPSA1ICopXHBhcg0KPiB5WzFdOj0gNTsgKCogeFsxXSA9IDEgKilccGFyDQo+ICAgXHBh
cg0KV2hhdCBpcyBleGFjdGx5IHRoZSBwcm9ibGVtP1xwYXINCmEgYW5kIGIgY29udGFpbiBwb2lu
dGVycy5Bc3NpZ25pbmcgYSB0byBiIGxldHMgdGhlIHR3byB2YXJpYWJsZXMgY29udGFpbiBccGFy
DQp0aGUgc2FtZSBwb2ludGVyIGFuZCwgdGh1cywgbGV0cyB0aGVtIHBvaW50IHRvIHRoZSBzYW1l
IGFycmF5LiBUaHVzIFxwYXINCmNoYW5naW5nIGIgKG9yIGEpIG1vZGlmaWVzIHRoZSBvdGhlciB0
b28uIE9uIHRoZSBjb250cmFyeSwgeCBhbmQgeSBhcmUgXHBhcg0KYXJyYXlzLiBBc3NpZ25pbmcg
b25lIHRvIHRoZSBvdGhlciBjaGFuZ2VzIGp1c3QgdGhlIHZhbHVlIG9mIHRoZSBsYXR0ZXIsIFxw
YXINCmJ1dCB0aGUgdHdvIGFycmF5cyByZW1haW4gZGlzdGluY3QsIGFuZCBtb2RpZnlpbmcgb25l
IGRvZXNuJ3QgbW9kaWZ5IHRoZSBccGFyDQpvdGhlci5ccGFyDQpJIGhvcGUgdGhpcyBoZWxwcy5c
cGFyDQpccGFyDQpHXCdlOXJhcmRccGFyDQpccGFyDQotLS0gQmxhY2tCb3hccGFyDQotLS0gc2Vu
ZCBzdWJqZWN0IEhFTFAgb3IgVU5TVUJTQ1JJQkUgdG8gYmxhY2tib3hAb2Jlcm9uLmNofX0AAAAt
AAAAkAAAAA=


----boundary-LibPST-iamunique-1965117085_-_---
Received on Mon Jun 19 2006 - 23:27:52 UTC

This archive was generated by hypermail 2.3.0 : Thu Sep 26 2013 - 06:27:50 UTC