鱼C论坛

 找回密码
 立即注册
查看: 2975|回复: 6

小甲鱼老师的程序怎么错了??求验证

[复制链接]
发表于 2012-1-8 20:35:47 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
void main(){      char *name[] = {"Fishc.com", "www.fishc.com", "home.fishc.com", "Fishc.com/dz"};      char **p;      int i;
      for( i=0; i < 4; i++ )      {            p = name + i;            printf("%s\n", **p);      }}
编译没错,逻辑个人觉得应该没错,都是运行出错? 是什么原因?

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-8 22:21:25 | 显示全部楼层
本帖最后由 菜鸟120 于 2012-1-8 22:24 编辑

#include <stdio.h>
void main()
{
        char *name[]= {"Fishc.com", "www.fishc.com", "home.fishc.com", "Fishc.com dz"};
        char **p;
        int i;
        for(i = 0;i < 4;i++)
        {
                p = name + i;
                printf( "%s\n", *p );
        }
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-8 22:22:23 | 显示全部楼层
是感觉没问题,但是在输入输出.C这个头文件,出现了i不是++而是--导致循环时出错,结果我查了一下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-8 22:23:58 | 显示全部楼层
printf( "%s\n", **p );
是这句出了问题,把**p的*去掉一个就没事了。**的意义我不是很懂,知道是取地址的值,那是不是出现了什么语法问题还是什么的呢?请小甲鱼老湿讲解下
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 13:19:55 | 显示全部楼层

*(*p)是指取*p这个地址的值,*p是指取*p的地址
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-9 14:16:28 | 显示全部楼层
**p 这个意义就是指向指针的指针..
LS说得没错..
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-1-11 08:15:14 | 显示全部楼层
关键不在于那个**p, 而是那个printf的输出格式:%s ! %s要求的参数为char * , 那么参数要配对才可以!所以是*p!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-10 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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