鱼C论坛

 找回密码
 立即注册
查看: 1874|回复: 10

指针数组和数组

[复制链接]
发表于 2014-12-6 13:18:13 | 显示全部楼层 |阅读模式

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

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

x
# include <stdio.h>


void main()
{
        int a[10]={9,8,7,6,4,5,63,52,14,53};
        int *b[10];
        int i;
        *b=a;
        for(i=0;i<10;i++)
                printf("%d\n",b[i]);
}

语法没错 怎么输出有错  
那里错了呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-6 15:01:07 | 显示全部楼层
我学的C++,C的输出语句我不懂,但指针数组*b[10]表示数组b里有10个指针元素,那么*b=a;这条语句是不是有问题?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-6 15:04:48 | 显示全部楼层
只爱你一人 发表于 2014-12-6 15:01
我学的C++,C的输出语句我不懂,但指针数组*b[10]表示数组b里有10个指针元素,那么*b=a;这条语句是不是有问 ...

应该不会把  *b是一个一级指针  *b[]  这里面的b 是一个二级指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-6 23:36:19 | 显示全部楼层
本帖最后由 Victory_6226 于 2014-12-6 23:39 编辑

int *b[10]是代表指针数组啊,表示10个指针

printf("%d\n",b)这句只能打印出第一个元素b[0]的指向的数组名a的地址吧,其他9个都是野地址吧,你可以验证下如下代码
# include <stdio.h>


void main()
{
        int a[10]={9,8,7,6,4,5,63,52,14,53};
        int *b[10];
        int i;
        *b=a;
        printf("%d\n",a);
        for(i=0;i<10;i++)
                printf("%d\n",b[i]);
        getchar();
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2014-12-7 11:48:26 | 显示全部楼层
数组名是其第一个元素的地址,那么对指针数组b 解引用(*b)得到的就是它的第一个元素 b[0]的地址
*b = a;这句实际上是把数组a 赋给了b[0],
那么b[1],b[2],b[3]……它们都没有正确的值(你定义指针时没有初始化),也就是楼上的大大说的野值!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-7 11:58:52 | 显示全部楼层
只爱你一人 发表于 2014-12-7 11:48
数组名是其第一个元素的地址,那么对指针数组b 解引用(*b)得到的就是它的第一个元素 b[0]的地址
*b = a; ...

嗯  后来又想通了  谢谢拉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-8 11:20:08 | 显示全部楼层
用指针实现
#include <stdio.h>

void main()
{
        int a[10]={9,8,7,6,4,5,63,52,14,53};
        int i;
        int *b= a;
        for(i=0;i<10;i++)
                printf("%d\n",b[i]);
}

用指针数组实现
#include <stdio.h>

void main()
{
        int a[10]={9,8,7,6,4,5,63,52,14,53};
        int *b[10];
        int i;
        for(i=0;i<10;i++)
                {
                        b[i] = &a[i];
            printf("%d\n",*b[i]);
                }
}

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
拈花小仙 + 5 + 5 + 3 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-12-8 14:21:48 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-9 21:52:24 | 显示全部楼层
风之残月   正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-12 09:52:19 | 显示全部楼层

风之残月   确实是正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-13 16:28:46 | 显示全部楼层
多看求助贴,涨知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 12:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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