Re: [CODE] Help

From: Daniel Koepke (dkoepke@CALIFORNIA.COM)
Date: 12/05/97


On Fri, 5 Dec 1997, Chuck Reed wrote:

->char *abil_desc_parse = {
->"blah blah blah blah blah \r\n
->blah blah blah blah blah\r\n",
->
->"\0"
->};

Apparently not.  Let's review:

  char abil_desc_parse[] = { "This is a single string!" };

If you do "abil_desc_parse[0]" to this, you get the *letter* 'T'.
This is an array of characters (essentially what a string is).  You
currently have:

  char *abil_desc_parse = { ... };

which is invalid.  That's a pointer to a string, which would be done
with:

  char *abil_desc_parse = "This is also a single string!";

But, neither of these things is what you want.  You want an array of
strings, so that "abil_desc_parse[0]" gives you a string.  So you
want:

  char *abil_desc_parse[] = {
    "This is one string.",
    "This is another string.",
    "This is the last one."
  };

Stuff like this is done elsewhere in the CircleMUD code (top of
class.c comes to mind).  It's a pretty simple concept, and doesn't
even involve having to understand pointers, really.  Just realizing
the difference between an array of characters and an array of strings.

This, "char abil_desc_parse;" is a single character.  This, "char
abil_desc_parse[];" is an array of single characters (thus creating
ONE, and ONLY one, string).  This, "char *abil_desc_parse;" is a char
pointer--to not go into too much detail on how pointers actually work,
we'll just say that we can use it to point to a place in memory that
contains a SINGLE string of characters (char *ptr = "ptr now points to
this string in memory.\r\n";).  To get an array of strings, we
typically do, "char *abil_desc_parse[];" because this gives us
multiple pointers to strings in memory.

To use similie, which is often more confusing than not, "char ch;" is
like a single lego.  "char array[];" is like some legos put together
to form, say, a wall.  "char *ptr;" is a pointer, which essentially
says, "Everytime someone looks here, I'll redirect them so they are
looking at whatever I'm pointing to."  And, "char *array_of_ptr[];" is
like a whole collection of lego-shapes.  That probably didn't clear up
a damn thing...:)

->struct abil_desc *ab_desc[] = {

I doubt you want to use a pointer here.  Remove the '*'.


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