HawkJW 2018-09-16 13:42 采纳率: 100%
浏览 922
已采纳

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个指针组成的数组,近似于二位指针;可以做
操作,
为什么会改变。
谢谢解答我的疑问

  • 写回答

4条回答

  • ailaillia 2018-09-17 01:48
    关注

    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);
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办