| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 623 人关注过本帖
标题:问个关于指针数组的问题
只看楼主 加入收藏
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
结帖率:81.25%
收藏
已结贴  问题点数:10 回复次数:9 
问个关于指针数组的问题
为什么形参用指针数组或者指向指针的指针,实参不能用二维数组名?为什么?求解释下原理,谢谢
比如:这个程序
void main()
{char a[4][30];
    char *m[4];
    int i;
    for(i=0;i<4;i++)
        gets(a[i]);
    for(i=0;i<4;i++)
        m[i]=a[i];
    void f(char *a[4]);
    f(m);//为什么不能直接用f(a)
    for(i=0;i<4;i++)
        cout<<m[i];
}
void f(char *a[4])
{
    int i,j;
    char *t;
    for(i=0;i<3;i++)
        for(j=0;j<3-i;j++)
            if(strcmp(a[j],a[j+1])>0)
            {
                t=a[j];a[j]=a[j+1];a[j+1]=t;
            }
  
}

[ 本帖最后由 大大猫 于 2011-10-13 21:57 编辑 ]
搜索更多相关主题的帖子: 二维 
2011-10-13 21:46
陈便往
Rank: 2
等 级:论坛游民
帖 子:61
专家分:32
注 册:2011-9-21
收藏
得分:0 
我晕,你想干嘛啊,指针也可以这样定义?服了
2011-10-13 22:07
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
回复 2楼 陈便往
那你能说出我哪句写错了吗,不会请别乱说,谢谢

[ 本帖最后由 大大猫 于 2011-10-13 22:43 编辑 ]
2011-10-13 22:41
正电子
Rank: 3Rank: 3
来 自:江苏常州
等 级:论坛游侠
帖 子:30
专家分:112
注 册:2011-7-26
收藏
得分:10 
对于char *m[4];m[i]是指想char的指针
而对于char a[4][30],要char (*n)[30];中的n才能指向a


[ 本帖最后由 正电子 于 2011-10-13 23:21 编辑 ]
2011-10-13 23:14
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 大大猫
没有头文件,函数没声明,就讨论这么激烈,二维传给一维你说可以不,不过编译器也可能不报错

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-13 23:42
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
回复 5楼 A13433758072
函数声明了呀,头文件这个都知道,我也不是问这个题,是以此打个比方,说的很清楚了,另:你在哪里看出讨论激烈了???
2011-10-14 15:16
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
回复 4楼 正电子
是啊,我就是发现了这个问题,但是不明白为什么是这样,这正是我想问得,求详细解释下吧!!!


[ 本帖最后由 大大猫 于 2011-10-14 15:25 编辑 ]
2011-10-14 15:19
大大猫
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2011-8-19
收藏
得分:0 
为什么只能用指向数组的指针,才能间接寻址;
指针数组既然指向了二维数组的首地址,为什么不能表示数组元素呢?很不理解,至于我写那个程序,只是关于这个的测试程序,测试没有错误啊,如果有错就直接说哪错了,别不解释还误导,谢谢。
2011-10-14 15:26
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
对于二维数组:
int a[n][m];
若有int *p = a[0];
则:
    a[i][j] == *(p+i*m+j)
用a来当地址:
a[i][j] == *(*(a+i)+j);
2011-10-14 15:43
快速回复:问个关于指针数组的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034653 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved