鱼C论坛

 找回密码
 立即注册
查看: 3036|回复: 4

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

[复制链接]
发表于 2017-6-8 16:15:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

使用道具 举报

发表于 2017-6-8 18:17:22 | 显示全部楼层
你的意思是把**x改为*x是一样的吗?还是怎么理解?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-8 19:22:48 | 显示全部楼层
newu 发表于 2017-6-8 18:17
你的意思是把**x改为*x是一样的吗?还是怎么理解?

是的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-11 22:01:57 | 显示全部楼层
额    sizeof(book) 和sizeof(book[0])  是一个地址 ,数组名字 指向的是第一个地址
所以 他俩是一个地址  是同样的长度类型   都是4字节 所以当他们相除的时候   结果是1;所以输出的结果相同  
没有工具 没敲代码 可能不对. 也可能我没理解你要问的问题....
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-12 00:09:00 | 显示全部楼层
怎么会一样?你试试这个,肯定编译不过去
  1. #include <stdio.h>
  2. void show(char *x,int n)
  3. {
  4.     int i;
  5.     for (i=0;i<n;i++)
  6.     {
  7.         puts(x[i]);
  8.     }
  9. }
  10. int main()
  11. {
  12.     char *book[]={
  13.         "《荒野的呼唤》",
  14.         "《时光之轮》",
  15.         "《老人与海》",
  16.         "《教父》",
  17.         "《基督山伯爵》",
  18.         "《地海传说》",
  19.     };
  20.     int size=sizeof(book)/sizeof(book[0]);
  21.     char **p=book;
  22.     show(p,1);
  23.     show(book,size);
  24.     return 0;
  25. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 15:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表