1

I have a function that accepts a variable length array of 80 character strings. I defined the function like so:

void foo (char namelist[][80] ...

in main() I do the following:

char **names = (char **)malloc(numNames * 80);
foo(names);

The type of names here is not correct. What is the appropriate way to type it as a variable length array of fixed length arrays?

dschatz
  • 1,188
  • 2
  • 13
  • 25

1 Answers1

4

names should be declared as:

char (*names)[80];

This declares names as a pointer to an array of 80 chars.

By the way, there's no need to cast the return value of malloc in C and many people consider it bad practice. See: 1, 2.

Community
  • 1
  • 1
interjay
  • 107,303
  • 21
  • 270
  • 254
  • This is correct. Though I think the advantages of casting malloc outweigh the disadvantages. To cast here: `(char (*)[])` – dschatz Oct 11 '11 at 19:05