char **参数如何传递?

colorheart 2009-04-29 09:54:53
调用Test时,输入参数如何传递?

void Test(char **str)
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
Test(*szTmpStr);
}
...全文
1445 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lpf000 2009-04-30
  • 打赏
  • 举报
回复
UP
hjjdebug 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 colorheart 的回复:]
多谢大家,试了一下,以下面的方法可以

void Test(char **str)
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
Test((char**)szTmpStr);
}
[/Quote]
你这个办法弊病一楼已经说了,最简单清晰是2楼办法。还有其它楼也对,我没细看
WOBUGUAN 2009-04-30
  • 打赏
  • 举报
回复
你试试在Test()里打印一下str的值看看?以免上当
colorheart 2009-04-30
  • 打赏
  • 举报
回复
多谢大家,试了一下,以下面的方法可以

void Test(char **str)
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
Test((char**)szTmpStr);
}
机智的呆呆 2009-04-29
  • 打赏
  • 举报
回复

#include<iostream>
using namespace std;

template<typename T,int M,int N>
void Test(T (&str)[M][N])
{
for(int i=0;i<M;i++)
{
cout<<str[i]<<endl;
}
}

int main()
{
char szTmpStr[2][50] = {"hello", "world"};
Test<char,2,50>(szTmpStr);
system("pause");
}


用引用啊~~
  • 打赏
  • 举报
回复
void Test(char *str[50])//固定一维大小
{}

2维数组名不等于2维指针

http://blog.csdn.net/rjzou2006/archive/2008/04/15/2292698.aspx
baiwei156 2009-04-29
  • 打赏
  • 举报
回复
参考下面的文章
一个二级指针作参数的问题
http://topic.csdn.net/u/20080805/17/bfff6db0-1326-44ba-8695-fe44749207a8.html
漁_夫 2009-04-29
  • 打赏
  • 举报
回复
char ** szTmpStr=new char*[50];
for(int i=0;i <50;++i)
szTmpStr[i]=new char[50];
Test(szTmpStr);

这个会好一点
liliangbao 2009-04-29
  • 打赏
  • 举报
回复
void Test(char **str) //str是指针的指针不是数组指针,所以会出现类型不匹配错误
{}
修改为
void Test(char (*str)[50])
{} 或
void Test(char str[][50])
{}
pengzhixi 2009-04-29
  • 打赏
  • 举报
回复
void main()
{
char ** szTmpStr=new char*[50];
for(int i=0;i<50;++i)
szTmpStr[i]=new char[50];
Test(szTmpStr);
}

wangyadong 2009-04-29
  • 打赏
  • 举报
回复
或者
void Test(char **str)
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
char *p=&szTmpStr[0][0];
Test(&p);
}
tian428 2009-04-29
  • 打赏
  • 举报
回复
void Test(char str[][50])
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
Test(szTmpStr);
}
wangyadong 2009-04-29
  • 打赏
  • 举报
回复
void Test(char str[][50])
{}

void main()
{
char szTmpStr[50][50] = {"hello", "world"};
Test(szTmpStr);
}

晨星 2009-04-29
  • 打赏
  • 举报
回复
你这个不好办,char[50][50]不能直接转化成二级指针。当然,你想强制转换也不是不可以,但那样一来,第一维的长度信息就丢失了。

65,197

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧