Deutsch English Français Italiano |
<v6l5r7$1pcjr$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: James Kuyper <jameskuyper@alumni.caltech.edu> Newsgroups: comp.lang.c Subject: =?UTF-8?Q?Re=3A_technology_discussion_=E2=86=92_does_the_world_need?= =?UTF-8?B?IGEgIm5ldyIgQyA/?= Date: Wed, 10 Jul 2024 01:22:47 -0400 Organization: A noiseless patient Spider Lines: 25 Message-ID: <v6l5r7$1pcjr$1@dont-email.me> References: <v66eci$2qeee$1@dont-email.me> <v67gt1$2vq6a$2@dont-email.me> <v687h2$36i6p$1@dont-email.me> <871q48w98e.fsf@nosuchdomain.example.com> <v68dsm$37sg2$1@dont-email.me> <87wmlzvfqp.fsf@nosuchdomain.example.com> <v6ard1$3ngh6$4@dont-email.me> <v6b0jv$3nnt6$1@dont-email.me> <87h6d2uox5.fsf@nosuchdomain.example.com> <v6l2o7$1p1a5$2@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Wed, 10 Jul 2024 07:22:47 +0200 (CEST) Injection-Info: dont-email.me; posting-host="8ee0f6de059aa2561c515748b1f9a8ec"; logging-data="1880699"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX196A0WgOSoxv9BWt3SZ+cOcm3Ja3ecrKhQ=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:QiVRsKufZ+Cs0paIX+TUQfnbUN8= In-Reply-To: <v6l2o7$1p1a5$2@dont-email.me> Content-Language: en-US Bytes: 2732 On 7/10/24 00:29, Lawrence D'Oliveiro wrote: > On Sat, 06 Jul 2024 15:38:14 -0700, Keith Thompson wrote: .... >> If you evaluate the expression `array_object` in most contexts, it's >> implicitly converted to a pointer *value*, pointing to the 0th element >> of the array object. There is still no implicit pointer object. > > The OP said “pointer”, not “pointer object” or “pointer value”. Not sure > what hair you are trying to split here. BGB referred to it as an "implicitly declared" pointer. You can declare objects in C, but not values. An object has a location in addressable memory where it is stored, a value need not exist anywhere in addressable memory. In every implementation that I'm sufficiently familiar with, no memory is set aside to store such a pointer object. A pointer value is formed, if needed, by taking an address stored in a register and adding an object-specific offset; the address stored in that address is of a group of objects with the same scope, it only incidentally happens to also be the address of one of those objects. And this is just as true of pointers to individual objects as it is of pointers to the first element of an array. That's convenient, since for the purposes of pointer arithmetic, C considers single objects to be equivalent to a 1-element array of that object's type.