From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6561 invoked by alias); 28 Oct 2005 18:58:50 -0000 Mailing-List: contact gcc-help-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-help-owner@gcc.gnu.org Received: (qmail 6530 invoked by uid 22791); 28 Oct 2005 18:58:47 -0000 Received: from zproxy.gmail.com (HELO zproxy.gmail.com) (64.233.162.196) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Fri, 28 Oct 2005 18:58:47 +0000 Received: by zproxy.gmail.com with SMTP id z6so605565nzd for ; Fri, 28 Oct 2005 11:58:45 -0700 (PDT) Received: by 10.36.224.34 with SMTP id w34mr560266nzg; Fri, 28 Oct 2005 11:58:45 -0700 (PDT) Received: by 10.37.22.44 with HTTP; Fri, 28 Oct 2005 11:58:45 -0700 (PDT) Message-ID: <2e393d080510281158j4aa327f2sbb1add535eb66fb1@mail.gmail.com> Date: Fri, 28 Oct 2005 18:58:00 -0000 From: corey taylor To: ework0 Subject: Re: Pointers to int Cc: gcc-help@gcc.gnu.org In-Reply-To: <436263FA.3010103@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline References: <4362255E.90303@racsa.co.cr> <20051028160530.GE6673@opaque.pepe> <436263FA.3010103@gmail.com> X-SW-Source: 2005-10/txt/msg00218.txt.bz2 Since you ask, it's not really a proper mechanism: You should use the increment operators for the destination pointer in the for statement instead of using the post increment operator with the dereference. Also, that whole statement doesn't quite make sense. You probably want to traverse 0 - (arraysize - 1) but you're actually checking for less than (arraysize - 1) which mean you never get there. Also, is the array a character array? If so, then the increments work, otherwise the arraysize might not represent the actual memory block size (say for short it is 2 bytes each item). Corey On 10/28/05, ework0 wrote: > Hello, > > > Christoph Bussenius wrote: > > >On Fri, Oct 28, 2005 at 07:19:26AM -0600, Fabio Andres Miranda wrote: > > > > > >>Can anyone explain to the list how this pointers to int work: > >> int *p; > >> p =3D (int *)(array); > >> for (i =3D 0; i < arraysize - 1; i +=3D 4) > >> *p++ =3D j - 8; > >> *p =3D 0x0; > >> > >>P is defined as a pointer to a int. Then, it points to (the beginning ? > >>) a char array. > >>What is the result of perform the instruction: *p++; ? > >> > >> > > > >As postincrement (++) has higher priority than dereference (*), p++ is > >what will be evaluated first. So p will be incremented by the size of > >an integer (probably 4). After that, p will point to the second integer > >of the array, i. e. array[1]. Now you use * to access that very > >location and store j-8 there. > > > > > > > Regarding this issue, I understand the priorities of operands, I dont > have clear what does the '++' operator increments: a. The memory > location (ej: If it was 0x01, now it is 0x02); b. The value contained in > the memory location p is point to? > > Can anyone provide a simpler illustrative examples regarding this > operations? I think it would be great for the records of the list, > > Best regards, > > ework0 >