QUOTE(Kiriran @ 24 Nov, 2007 - 05:21 PM)

Now I don't know how C++ initializes Objects in an array, but I guess it will insert null as default value.
No, it will construct the objects using their default constructor. Please, if you don't know, don't guess. C doesn't initialise objects in an array to null either, so I'm not sure where you got this idea from (Java perhaps?).
QUOTE(Kiriran @ 24 Nov, 2007 - 05:21 PM)

So s[9] will probably raise a null pointer exception again. You need to create instance of the object first in the array. I think in C++ that's done with new ITEM()
CODE
int i;
for(i = 0; i<10; i++) {
s[i] = new ITEM();
}
this will place 10 ITEM objects into your array. now s[9] should work.
hth
Again, if you don't know, don't guess. As NickDMax pointed out, the new operator isn't needed here - The code you've pasted won't compile, and changing it to use pointers is unnecessary.
Aside from the array out-of-bounds issue It looks to me as if the OP's code is OK, it seems that the OP's
accept function initialises the object's data members with user input
(Of course, the program would likely fall over if the accept function was never called, but I'm sure design issues can come later)