c语言,函数的参数为二维指针的问题

#include <stdio.h>
void lian(char **);
int main(void)
{
    int shu[2][3] = { {1,2,3}, {4, 5, 6} };
    printf("shu point is %p\n", shu);
    printf("*shu point is %p\n", *shu);
    lian(shu);

    system("pause");
    return 0;
}
void lian(char *shu[8])
{
    printf("shu point is %p\n", shu);
    printf("*shu point is %p\n", *shu);
}
------------------------------------------------------------
shu point is 001DFD84
*shu point is 001DFD84
shu point is 001DFD84
*shu point is 00000001
请按任意键继续. . .

很感谢能回答我的问题
我的问题是main函数中shu的值是001DFD84
而( * shu)的值是001DFD84
而在lian函数中,其shu有相同的值
为什么 * shu变了;
虽然参数为 shu[8],但其只传递main中shu的值001DFD84
而参数其实由8个指针组成的数组,近似于二位指针;可以做
操作,
为什么会改变。
谢谢解答我的疑问

char *shu[8])改成int (*shu)[3] ,前者代表指正数组,后者代表数组指针。而且两者数据类型不一样

#include
#include

void lian(int (*shu)[3]);
int main(int argc ,char** argvs)
{
int shu[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };
printf("shu point is %p\n", shu);
printf("*shu point is %p\n", *shu);

lian(shu);

system("pause");
return 1;

}
void lian(int (*shu)[3])
{
printf("shu point is %p\n", shu);
printf("*shu point is %p\n", *shu);
}

void lian(char *shu[8])
{
printf("shu point is %p\n", shu);
printf("*shu point is %p\n", *shu);
}
*shu --》 shu[0] 本质上是一个char型的变量, 其变量地址自然和 int型的地址不一致,建议从这个角度去考虑

赞成楼上。这种转换在VS2012中已不被支持。指针类型不同。一个是char一个是int.

如果从钻研编译器的角度,可以考虑;如果研究编程,这种问题不建议继续。