| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 836 人关注过本帖, 1 人收藏
标题:怎么把数组作为新参传递给函数。
只看楼主 加入收藏
谢宇航v5
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-10-1
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:10 
怎么把数组作为新参传递给函数。
新手求教、、
2013-10-01 10:12
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:3 
一维数组,数组作为函数参数传递,实际上传递了一个指向数组的指针
2013-10-01 10:55
夜十天
Rank: 1
等 级:新手上路
帖 子:32
专家分:7
注 册:2013-5-8
收藏
得分:3 
直接使用数组名就可以。不过,此时,形参和实参都指向了同一个内存地址。要注意这点。
2013-10-01 11:54
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:3 
百度一下你就知道

其实楼上说的对,不过需要注意的还很多

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-10-02 09:23
刀剑神魔
Rank: 1
等 级:新手上路
帖 子:20
专家分:7
注 册:2013-9-15
收藏
得分:3 
其实就是表示一个指针
2013-10-02 11:48
tianxiadiyih
Rank: 2
来 自:神秘星球
等 级:论坛游民
帖 子:30
专家分:48
注 册:2013-10-2
收藏
得分:3 
是不是将参数传递给函数,传递的都是指针呢?

永远的学生
2013-10-02 14:01
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:3 
找些实际例子体会

www.qunxingw.wang
2013-10-02 14:01
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:3 
给你个例子,这个例子是用函数模板来实现的,将一个二维数组作为参数传入函数,然后返回一个指向指针的指针:
#include<iostream>
using namespace std;
/*******************************/
template<typename T,int R,int C>
T **ConvertToPrt(T (&a)[R][C])
{
    T **p = (T **)malloc(sizeof(T *)*R);
    for(int i=0; i<C; i++)
    {
       p[i] = a[i];
    }
    return p;
}
//调用示例如下:
int main()
{
float x[3][3]={{0,5,10},{15,20,25},{30,35,40}};
float **p=ConvertToPrt(x);
for(int i=0; i<3; i++)
{
  for(int j=0; j<3; j++)
  {
    cout<<p[i][j]<<endl;
  }
}
//释放申请的内存
for(int i=0; i<3; i++)
{
   free(&(p+i));
}
free(p);
return 0;
}

[ 本帖最后由 303770957 于 2013-10-3 00:40 编辑 ]

♂ 死后定当长眠,生前何须久睡。♀
2013-10-02 14:37
kingwinx
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2013-10-2
收藏
得分:3 
#include<iostream>
using namespace std;
/*******************************/
template<typename T,int R,int C>
T **ConvertToPrt(T (&a)[R][C])
{
    T **p = (T **)malloc(sizeof(T *)*R);
    for(int i=0; i<C; i++)
    {
       p[i] = a[i];
    }
    return p;
}
//调用示例如下:
int main()
{
float x[3][3]={{0,5,10},{15,20,25},{30,35,40}};
float **p=ConvertToPrt(x);
for(int i=0; i<3; i++)
{
  for(int j=0; j<3; j++)
  {
    cout<<p[i][j]<<endl;
  }
}
//释放申请的内存
for(int i=0; i<3; i++)
{
   free(*(p+i));
}
free(p);
return 0;
}

可以讲解一下这个例子吗?
2013-10-02 21:59
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
收藏
得分:0 
回复 9楼 kingwinx
好好看书去,书看仔细了,理解透彻了再来问,这个都不明白C语言你是白学了。

♂ 死后定当长眠,生前何须久睡。♀
2013-10-02 23:12
快速回复:怎么把数组作为新参传递给函数。
数据加载中...
 
   



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

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