dschatz
dschatz

Reputation: 1218

variable length array of fixed length arrays in C

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?

Upvotes: 1

Views: 1455

Answers (1)

interjay
interjay

Reputation: 110069

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.

Upvotes: 4

Related Questions