Message-Id: <199909030938.FAA17194@delorie.com> From: "Dan Gold" To: Subject: Re: How to make allocate an array of strings? Date: Fri, 3 Sep 1999 09:52:38 -0700 X-MSMail-Priority: Normal X-Priority: 3 X-Mailer: Microsoft Internet Mail 4.70.1155 MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Reply-To: djgpp AT delorie DOT com Continued... On the topic of... char (*p)[SIZE] = malloc(number*SIZE); /* C */ I didn't really understand the declaration? Like if I went char *array[20]; I would get an array of character pointers and if I wanted an array of pointer to pointers I would use **array[20]. . I'm confused about the parenthesis and what it changes to say the least? I don't see how it understands you want an array of pointers? Is SIZE the number of pointers or the size of data each one points to, it looks like both since the array is [SIZE] and each index points to *SIZE?, I realize the brackets has something to do with that. Well I guess I just need it broken down into bitesize chunks. If I were to define an array of pointers I would go: char *p[20]; // 20 pointers If I were to allocate an array of pointers I would go: char **p = malloc(20 * sizeof(char *)); Is this right? is the double pointer necessary or can you have a single pointer to an array of pointers when allocating? or must a pointer to a pointer always be a **pointer? char *p = malloc(20 * sizeof(char *)); // impossable? If I were to create an array of pointers, I would then allocate the data for them like this? for (i=0; i