Ok, I've put on my language lawyer hat because I really have to clear up a misconception that is dogging this thread: NOTE: An array name is _not_ a pointer in C. An array name is an identifier for an area of memory (the array). It is just that in _most_ contexts you can treat the array name as a pointer to the first element of the array. The terminology typically used is that it 'decays' to the pointer. There are at least two places where treating the array name as a pointer breaks down: 1) You cannot change this 'pointer' to point to anything else, ever. For example, given: char buf[20]; char buf2[10]; buf = buf2; // This is illegal. You are trying to change the array name buf to point to something else (in this case to be equal to the pointer to which 'buf2' decays). 2) When using the array name in a sizeof operation, you get the size of the entire array, _not_ the size of a pointer to the elements. Thus, given: char buf[20]; sizeof(buf) will be 20. 2) [Optional for advanced language-law students] There is actually an exception to the rules described in 1 and 2, above. When an array is declared as argument to a function: void foo(char buf[20]) { } Then within the function 'foo', buf really _is_ treated as a pointer to char. You can freely adjust it or assign things to it: char buf2[20]; ++buf; buf = buf2; And sizeof(buf) will return the size of the pointer, not the buffer! Bob Ammerman RAm Systems (contract development of high performance, high function, low-level software) -- http://www.piclist.com hint: PICList Posts must start with ONE topic: [PIC]:,[SX]:,[AVR]: ->uP ONLY! [EE]:,[OT]: ->Other [BUY]:,[AD]: ->Ads