On 0, Perceval Anichini <[EMAIL PROTECTED]> wrote: [snip] > > Moreover, argv + sizeof (argv[1]) is equal to argv[4] (as sizeof (char*) = > 4) ... > > > No. If that were so then you could not access the list of arguments > > to a main function as argv[0], argv[1], argv[2] etc. The compiler > > knows that the type of argv is char**, or char*[], an array of > > pointers to chars, and it knows that sizeof( char* ) is 4 (on the > > platforms we're talking about). It is almost an axiom that > > argv[1] == argv[0] + sizeof( argv[0] ), since this is the address of > > the next element in the array. So argv[4] = argv + 4*sizeof( argv[1]). > > Wrong. We are talking about pointers, not about integers nor unsigned. > When you write > argv + 1, the compiler will understand : compute the address > of argv, and add one time the size of the type which is pointed by argv. > I remember to you that argv[1] = argv + 1. Brackets are only syntactic > sugar, which allows us not seeing we are dealing with pointer arithmetic.
Is that so? I didn't know that. My understanding of the situation was that argv + 4 was equivalent to ((int)argv) + 4, not argv + (char*)4. But I think that I learnt that A long long time ago, on a compiler far far away... Tom -- Tom Cook Information Technology Services, The University of Adelaide "My advice to you is to get married: If you find a good wife, you will be happy; if not, you will become a philosopher." - Socrates Get my GPG public key: https://pinky.its.adelaide.edu.au/~tkcook/tom.cook-at-adelaide.edu.au
pgpcKZowf8mZY.pgp
Description: PGP signature