void test(char* a[]) { printf("in test a is %d\n",a); printf("in test a + 1 is %d\n", a+1); } void test2(char a[][3]) { printf("in test2 a is %d\n",a); printf("in test2 a + 1 is %d\n", a+1); } void test3(char (*a)[3]) { printf("in test3 a is %d\n",a); printf("in test3 a + 1 is %d\n", a+1); } void test4(char ** a) { printf("in test4 a is %d\n",a); printf("in test4 a + 1 is %d\n", a+1); }其中test2,test3含义一样,参数声明为数组指针,需要表明数组的长度。
test ,test4一样,都是指针数组,其实,在test4中,将char* 看成一个整数,或者看成一个整体,和test就差不多了
。
int main(int argc, char* argv[]) { char a3[2][3] = {{"11"},{"22"}}; char *a2[] = {"11","22"}; test(a2); test2(a3); test3(a3); test4(a2); return 0; }