Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!apctrc!drd!tdh From: tdh@DRD.Com (Tom Haynes) Newsgroups: comp.lang.c Subject: Passing Multi-dimensional arrays to a function Message-ID: <1990Jul17.224910.20086@DRD.Com> Date: 17 Jul 90 22:49:10 GMT Reply-To: tdh@drd.Com (Tom Haynes) Distribution: na Organization: DRD Corporation, Tulsa, OK Lines: 89 I have two problems, which I suspect are actually one. First, let me lay down some groundwork: In my header file, arayedit.h, I have: : : #define SCREEN 11 #define COLS 6 #define MAX_SCREEN 11 #define KEYS 500 : : int ared2bf(struct st_edit **, int, char ***, int *, int *); int cischa(int, char *, int, int, char **); : : In my "main" program, actually a driver for my code, ardrvr.c, I have: : : char buf[SCREEN][COLS][MAX_SCREEN]; char prefix[6][KEYS]; int curr; curr = 0; : : cischa(pnlptr, "PREFIX", 0, SCREEN, prefix[curr]); ared2bf9EDIT, curr, buf, free, list); : : And, in ared2bf.c, I have: int ared2bf(struct st_edit **EDIT, int base, char ***buf, int *free, int *list) { : : Finally, in cischa.c, I have: int cischa(int pnlptr, char *fldnam, int fstelm, int numelm, char **string) { : : When I try and compile the above code, in MSC 5.1, and its supporting functions, I get the following errors: ardrvr.c(63) : warning C4047: 'arguement' : different levels of indirection ardrvr.c(63) : warning C4024: 'cischa' : different types : parameter 5 ardrvr.c(64) : warning C4047: 'arguement' : different levels of indirection ardrvr.c(64) : warning C4024: 'ared2bf' : different types : parameter 3 Where lines 63 and 64 are the two lines that call the functions cischa and ared2bf in ardrvr. Of course, these errors repeat themselves for each of the calls that I have in ardrvr. The questions that I have, is: How am I supposed to pass my multidimensional arrays to a function. I have a 2x2 character string, buf, and an array of charcter strings, prefix. With buf, I want to pass the whole array, and with prefix, only that from index curr on. How do I accomplish this amazing feat, which I, of course %\), think that I am doing correctly with my implementation. Also, instead of saying : char buf[SCREEN][COLS][MAX_SCREEN]; I would like to say, : char buf[SCREEN][cols][MAX_SCREEN]; where cols is an int that I have passed into ardrvr, and is application dependent. As it is, COLS is application independent, just change the #define, but two different calls, with varying column (COLS) length is not permissable. How do I go about coding this? I want to personally thank each and every one of you who answers, or even thinks about my problems. I read this group, so either post it here or email me directly at ztdh0a@apctrc.amoco.com. Whenever, Tom Haynes.