飞翔的小鸟 发表于 2017-6-8 16:15:16

C语言中为什么函数形参中二级指针和一级指针指输出的结果一样

#include <stdio.h>
void show(char **x,int n)
{
        int i;
        for (i=0;i<n;i++)
        {
                puts(x);
        }
}
int main()
{
        char *book[]={
                "《荒野的呼唤》",
                "《时光之轮》",
                "《老人与海》",
                "《教父》",
                "《基督山伯爵》",
                "《地海传说》",
        };
        int size=sizeof(book)/sizeof(book);
        char **p=book;
        show(p,1);
        show(book,size);
        return 0;
}

newu 发表于 2017-6-8 18:17:22

你的意思是把**x改为*x是一样的吗?还是怎么理解?

飞翔的小鸟 发表于 2017-6-8 19:22:48

newu 发表于 2017-6-8 18:17
你的意思是把**x改为*x是一样的吗?还是怎么理解?

是的

只是一个酱油 发表于 2017-6-11 22:01:57

额    sizeof(book) 和sizeof(book)是一个地址 ,数组名字 指向的是第一个地址
所以 他俩是一个地址是同样的长度类型   都是4字节 所以当他们相除的时候   结果是1;所以输出的结果相同
没有工具 没敲代码 可能不对. 也可能我没理解你要问的问题....

超凡天赐 发表于 2017-6-12 00:09:00

怎么会一样?你试试这个,肯定编译不过去
#include <stdio.h>
void show(char *x,int n)
{
    int i;
    for (i=0;i<n;i++)
    {
      puts(x);
    }
}
int main()
{
    char *book[]={
      "《荒野的呼唤》",
      "《时光之轮》",
      "《老人与海》",
      "《教父》",
      "《基督山伯爵》",
      "《地海传说》",
    };
    int size=sizeof(book)/sizeof(book);
    char **p=book;
    show(p,1);
    show(book,size);
    return 0;
}
页: [1]
查看完整版本: C语言中为什么函数形参中二级指针和一级指针指输出的结果一样