找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16891|回复: 11
打印 上一主题 下一主题

ug里传二维数组怎么传好阿

[复制链接]
跳转到指定楼层
1
发表于 2004-4-20 17:25:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
比如要传多个字符串给一个API函数
这些字符串存在二维字符数组中char string[50][50]
函数形参是char * *
实参应该怎么写呢?
用数组名string不行
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-4-20 18:03:51 | 只看该作者
解决这个问题最好的方法就是申请动态二维数组。
3
发表于 2004-4-20 22:45:28 | 只看该作者
定义一个一维数组指针 char* str;
  
然后传 [$str]
4
发表于 2004-4-21 08:39:02 | 只看该作者
如果你的数组的大小是固定的,并且数组是静态分配的,是可以传递二维数组名的,这是没有什么问题的。
如果你的C++功底好,可以尝试用STL,STL的平台无关性还不错,这是一个很不错的东西。但是它跨动态库传递数据就要费些工夫。
5
发表于 2004-4-21 09:00:34 | 只看该作者
嗯,我们最后用的就是zzz斑竹说的
pinkwall兄的意思是不是先定义二维数组string[50][50]
然后char * pstring = string?这样不行吧
spline兄,不知道你有没有试过传递二维数组名?我在vc6中会有如下编译错误:
cannot convert parameter 6 from 'char [500][256]' to 'char ** '
STL我是试过的,但是UG API函数参数通常是char *型,而用string类的c_str()函数返回的是const char *型,不能隐式转换啊
6
发表于 2004-4-21 13:05:43 | 只看该作者
你没理解我的意思
  
首先定义一个一维的  
  
char* str;
  
然后把它的取它的地址作为参数传给api函数
  
比如 uf_xx_xx_xx(xx, xx, xx, [$str)]
  
实际上就是一个二位数组了
7
发表于 2004-4-21 14:24:01 | 只看该作者
关键还要看这个char **是返回参数,还是输入参数。如果是返回,则要使用&str的形式,否则会出错(这是UG的问题,不是c语言的问题)。如果是输入参数,那么使用&str就有局限了。
8
发表于 2004-4-21 15:06:02 | 只看该作者
在c中 定义char c[2][5];
c只是一个char*,而不是一个char**。
它实际就是定义了一个c[10]而已。
这一点不知道楼主注意了没有
如果就想定义一个char**,应该这样定义:
char* c[2];
char a[]="abc";
char b[]="defg";
c[0]=a;
c[1]=b;
//这样c才是一个char**;
也可以用new 的方法动态的定义,来取代a,b
9
发表于 2004-4-21 16:41:23 | 只看该作者
pinkwall兄:
正如zzz斑竹所说,你这种方法只适用于string是输出参数,如果你是要传入的话,你当然得自己负责分配空间,而不是仅仅声明一个指针
goodluckwu兄:
这种方法我们也用过,但是如果数组很大的话,就有很多额外的开销
比如char string[500][500],如果要把string传入,还要额外定义一个
char * pstring[500],然后通过循环pstring = string,最后传入pstring
太麻烦了
其实我觉得用STL中的string配合vector是最好的了,就是最后传参数有问题
10
发表于 2004-4-21 17:30:04 | 只看该作者
我在vc6中会有如下编译错误:
cannot convert parameter 6 from 'char [500][256]' to 'char ** '

  
这个当然是错的了。
这样传递,编译器就无法计算地址了。
你的参数类型应该是char [256]类型的,这样,数据类型才一致嘛。
用用typedef
typedef char[256] TMy_str;
TMy_str str[500];
形式参数类型为 TMy_str *
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-25 22:34 , Processed in 0.033085 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

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