On Tue, Sep 27, 2005 at 11:46:20PM +1000, O Plameras wrote:
> Erik de Castro Lopo wrote:
> 
> >You will notice that something like the Array.mapi function is
> >much less likely to contain errors than the C for loop.
> > 
> >
> I can modify my C-program to remove that problem in the ff. So,
> as to whether a C-program is more prone to error relies on the
> manner and style of coding and not intrinsic to C-language. Don't
> you think ?

It's still brittle; for instance look what happens if you
naively try to move printing to a function:

#include <stdio.h>


void p(int integer_array[])
{
        int *ptr, *past_end, *iptr;

        ptr = &integer_array[0];
        iptr = ptr; printf("\n\n");

        past_end = integer_array + sizeof(integer_array)/sizeof(int);
        while (ptr < past_end)
        {
                printf("integer_array[%d] = %d ",(ptr - iptr),*ptr);
                ptr++;
                putchar('\n');
        }
}

int main(void)
{
        int some_integer_array[] = {1,-2,3,-4,5,-6,-7,8,-9,32727000};
        p(some_integer_array);
}
$ make op-array
cc     op-array.c   -o op-array
$ ./op-array


integer_array[0] = 1
$
OOPS!  -- sizeof gives the size of int*, not int[].

I'd give the C++ equivalant, but without static initializers for vectors,
(coming in the next standard!) it's a little too ugly :-)

Matt

-- 
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html

Reply via email to