For below code how do I pass char[][]
as char**
parameter?
#include <stdio.h>
#include <string.h>
void fn(int argc,char** argv)
{
int i=0;
printf("argc : %d\n",argc);
for(i=0;i<argc;i++)
printf("%s\n",argv[i]);
}
int main()
{
char var3[3][10]={"arg1","argument2","arg3"};
char var4[4][10]={"One","Two","Three","Four"};
fn(3,&var3);
fn(4,&var4);
return 0;
}
Getting below error:
$ gcc -Wall anyNumberOfParameters.c -o anyNumberOfParameters.exe
anyNumberOfParameters.c: In function ‘main’:
anyNumberOfParameters.c:18:1: warning: passing argument 2 of ‘fn’ from incompatible pointer type [enabled by default]
fn(3,&var3);
^
anyNumberOfParameters.c:5:6: note: expected ‘char **’ but argument is of type ‘char (*)[3][10]’
void fn(int argc,char** argv)
^
anyNumberOfParameters.c:19:1: warning: passing argument 2 of ‘fn’ from incompatible pointer type [enabled by default]
fn(4,&var4);
^
anyNumberOfParameters.c:5:6: note: expected ‘char **’ but argument is of type ‘char (*)[4][10]’
void fn(int argc,char** argv)
^
If I change my code in main()
as:
char* var3[3]={"arg1","argument2","arg3"};
char* var4[4]={"One","Two","Three","Four"};
fn(3,var3);
fn(4,var4);
It works fine, but I want to know how do I pass char[][]
as parameter.
char var[3][10]={"One","Two","Three"};
printf("%s",var[1]);
it does print : Two
So if I pass var
to char**
; won't it be equivalent to two dimentional array's address?
I mean for a function fn(char*)
we do pass as:
char name[20]="Thomas";
fn(name);
char**
is making me confused