{BTW, I'm in the acursed Win95 using Netscape Communicator at the moment, so forgive me if the posting comes out odd looking, or has anomolies, I've never done this before :\) Chuck Reed wrote: > I have seen a lot of new stuff in C, but one thing is just really escaping > me. I cannot seem to figure out all the *->ch or *->* or whatever. What in > gods name does this "->" mean? I have looked in my on-line C tutorials and > I can't seem to find it. Okay, really quickly: there's two ways to access a member of a structure, with a '.' or with a '->'. They do the same thing, except for different types of structures. The '.' notation is used for non-pointers, and the '->' used for pointers. Example: struct char_data *ch; /* is a pointer */ for (ch = char_linked_list; ch; ch = ch->next) /* note the "ch->next" */ for pointers we can't do "ch.next". For non-pointers we use '.': struct stupid_struct ss; ss.data = strdup("This isn't a pointer."); There is, of course, one other exception. You use '.' for dynamically allocated arrays that use the bracket-notation for indexing. So, to give an example: extern struct room_data *world; /* note this is a pointer */ for (ch = world[ch->in_room].people; ch; ch = ch->next_in_list) This is because when we use the bracket-notation we are accessing a single element in the dynamic array, not the pointer/dynamic array itself. However, when we use pointer math to refer to an element, we are still dealing with a pointer. For instance: extern struct room_data *world; int i; i = (world+ch->in_room)->number; Anyway, hopefully this message comes out okay and Netscape doesn't decide to use a bunch of HTML and garbage. daniel koepke / dkoepke@california.com +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST