社区
C++ 语言
帖子详情
求助:关于二维数组作为函数参数
zhufnbo
2004-11-09 09:40:49
写一个函数:
fun(..,char a[5][5])
二维数组作为一个输出参数,
但是现在这个二维数组会很大,到a[100][100],
造成极大的资源浪费。
而且系统performance会受到很大影响。
但不知用什么样的指针?
我用指针数组,char* a[5],
但是在函数体内,a[i][j] = x;
出现core
而用二维数组作为参数,a[i][j] = x;
不会有core。
请高手帮忙,谢谢!
...全文
231
14
打赏
收藏
求助:关于二维数组作为函数参数
写一个函数: fun(..,char a[5][5]) 二维数组作为一个输出参数, 但是现在这个二维数组会很大,到a[100][100], 造成极大的资源浪费。 而且系统performance会受到很大影响。 但不知用什么样的指针? 我用指针数组,char* a[5], 但是在函数体内,a[i][j] = x; 出现core 而用二维数组作为参数,a[i][j] = x; 不会有core。 请高手帮忙,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhufnbo
2004-11-09
打赏
举报
回复
因为我要用这个函数返回一个二维数组,要知道具体每个即[i][j]的值,
我感觉如果char [5][5],肯定要分配5×5的空间的,
如果只是指针的话,那就根本不用考虑空间的问题吧,
我觉得不对,
-------
char (*data)[5]=a;
好像是对二维数组的一行赋值吧?
谢谢你的答案。
我试试后看。
zhangfjj
2004-11-09
打赏
举报
回复
char (*data)[5]=a;这么来赋值呀
除非你不用数组,不然总要给数组分配空间的。
但在函数调用的栈里,肯定不会有char [5][5],而变成了指针的。
建议看看教材中关于数组和指针这节里的内容。
zhufnbo
2004-11-09
打赏
举报
回复
fun(..,char a[5][5])//在编译时变成了一个char (*a)[5],一个行指针,不会把数组整体传过来的。
所以不会有你所说的资源浪费的问题!
--------------------------------------------------------------------
但是在栈中,要开辟char a[5][5] 或a[100][100]的空间的,所以performance会受到很大影响
另我用char (*data)[5],
怎么赋值?
用data[i][j]?
好像不行,
我试试。
谢谢
zxl_llx
2004-11-09
打赏
举报
回复
用**p吧,
其还是要看你什么数据。因地制宜。
yycec
2004-11-09
打赏
举报
回复
数组(不管几维)在内存中都是一片连续的存储空间,数组名(不管几维)正是这片空间的首地址,也就是第一个元素的地址。用法和指针一样,数组名<=>指针。不信你试试。只有各维的长度不准确时,会引起访问异常。
imRainman
2004-11-09
打赏
举报
回复
fun(..,char a[5][5])//在编译时变成了一个char (*a)[5],一个行指针,不会把数组整体传过来的。
所以不会有你所说的资源浪费的问题!
>>楼上正解~~~~~~~~~~~~~!!!!
xuzheng318
2004-11-09
打赏
举报
回复
帮你顶!
双杯献酒
2004-11-09
打赏
举报
回复
void GetData(char data[4][5] )
也可以写成
void GetData(char (*data)[5] )
但不能写成
void GetData(char* data[5] )
zhangfjj
2004-11-09
打赏
举报
回复
楼上的,数组名a可不是char **,是char(*)[10],你的例子会出问题的!
yycec
2004-11-09
打赏
举报
回复
举个例子:
char a[10][10];
...
void fun(char **array, int nLine, int nCol)
{
for (int i = 0; i < nLine; i++)
{
for (int j = 0; j < nCol; j++)
{
a[i][j] = ...;
....
}
}
}
调用:fun(a, 10, 10);
}
双杯献酒
2004-11-09
打赏
举报
回复
// Dev C++ 4.9.8.0
#include <cstdlib>
#include <iostream>
using namespace std;
void GetData(char data[4][5] )
{
for(int i=0;i<4;i++)
{
for(int j=0;j<5;j++)
{
data[i][j] = 'A'+i*5+j;
}
data[i][4] = '\0';
}
}
int main()
{
char data[4][5]={0};
GetData(data);
for(int i=0;i<4;i++)
{
cout << data[i] << endl;;
}
system("pause");
return 0;
}
/*
运行结果:
ABCD
FGHI
KLMN
PQRS
请按任意键继续 . . .
*/
yycec
2004-11-09
打赏
举报
回复
二维数组即指针的指针,作为参数传递可如下所示:
void fun(BaseType **pArray, int nLine, int nCol)
余下你应该知道怎么做了吧。
zhangfjj
2004-11-09
打赏
举报
回复
fun(..,char a[5][5])//在编译时变成了一个char (*a)[5],一个行指针,不会把数组整体传过来的。
所以不会有你所说的资源浪费的问题!
LoveCreatesBeauty
2004-11-09
打赏
举报
回复
vla
跟汤老师学Java(第7季):数组
本课程从零开始,以通俗易懂的方式讲解Java入门,真正做到零基础入门学习,最适合初学者的教程! 课程内容包括: 1.数组简介 2.数组基本用法 3....练习:
二维数组
11.冒泡排序 12.Arrays工具类 13.不定长参数
二维数组
传参问题
本文解决 的问题是怎么样将
二维数组
作为一个参数传递到函数中。 步骤 我们都知道在函数调用前需要先声明和实现。对于一个整型
二维数组
。其实在函数签名中写形参定义:int a[3][3],代表的就是这个函数中有一个3*3的...
求
二维数组
中的最大值和最小值C语言,c语言 写一个子函数要求找出一个
二维数组
的最大值...
我假设你说的
二维数组
里面保存是整数,问的是找到
二维数组
中的最大值,并且返回一个最大值的位置。函数内部两个for循环遍历数组,能找到最大值和位置吧。返回这三个整数的办法?我猜楼主不明白这个。可以new一个整形...
二维堆叠 matlab,matlab
二维数组
与三维数组叠加问题
本帖最后由 xiaohuangzz 于 2012-10-16 21:14 编辑有任意一个
二维数组
如A=[3 4 5 4;3 4 5 3;2 3 4 6]与任意一个三维数组B(:,:,1)=[5 3 6 7;3 4 6 4;2 5 3 6]B(:,:,2)和B(:,:,3)也是类似的3*4数组。希望求得新的三维...
C语言错误c2063,请教C语言中关于将
二维数组
复制到一个三维数组的问题
请教C语言中关于将
二维数组
复制到一个三维数组的问题小白正在填写一段代码,是有点类似与俄罗斯方块的一段游戏代码,代码如下要求在增加参数,变量和函数的情况下完成此代码,只能填写// write appropriate codes ...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章