Liste des Groupes | Revenir à cl c |
On 2024-07-07, James Kuyper <jameskuyper@alumni.caltech.edu> wrote:All this only really applies if one assumes the pointer to the array is part of the array itself.On 7/7/24 16:10, BGB wrote:Ritchie's B language had arrays which contained a pointer to theirOn 7/7/2024 9:03 AM, James Kuyper wrote:>On 7/7/24 00:55, BGB wrote:>On 7/6/2024 5:38 PM, Keith Thompson wrote:......No, there is no implicitly defined pointer.This implicit pointer need not exist at a location in memory...>
Which is why C doesn't give you access to it's location in memory -
something you complained about earlier.
I don't think I was claiming that one should have direct access to its
location or value within the language, rather that their existence and
behaviors could be acknowledged in the language design (for a "not
quite C" language).
I think that the existence of an implicit pointer would be a bad thing
to acknowledge, given that the language doesn't require that it exist,
and typical implementations don't use them. From what I understand, the
fact that your implementation does have implicit pointers makes it a rarity.
first element. Via a hack, it was possible to relocate an array.
In C, such a thing is not simply not required; it is ruled out
by the detailed semantic description of arrays.
The entire representation of an array of size N elements of type
T is contained in the memory block that is sizeo(T)*N bytes wide.
If you copy that block, you have a fully functional copy of the array.
No extra pointer needs to be set up with the correct value.
Furthermore, to dynamically allocate an array, you need only
provide sizeof(T)*N bytes of storage, and not a bit more.
There is simply nowhere in the representation of an array where
a pointer could hide that is part of the representation.
Code that manipulates arrays can be translated into something thatI was never saying the pointer is *in* the array or object...
calculates a pointer. So a pointer can exist at run time, in a transient
way, perhaps in a register. That register can even be spilled into
memory. However, that's just part of the state of an evolving
calculation, not part of the representation of the array.
Les messages affichés proviennent d'usenet.