参数检查

nscboy 2003-02-28 10:16:10
我声明了一个函数CalcLx20CodeBar(char * const pData,double dout[29][2])
用dout[29][2]来返回运算运算后的结果.
请问用什么方法可以检查传人的参数是否是有效的存储空间.
例如使用调用则非法
double ds[10][2];
char c[]="abcdefg;"
CalcLx20CodeBar(c,double ds);
请问我可以使用什么方法检测到ds的大小,并且在判断后进行处理?
...全文
78 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nscboy 2003-03-05
  • 打赏
  • 举报
回复
我已经采纳了 lbaby(永不停息) 的意见采用一个自定义结构,
Frank001 2003-02-28
  • 打赏
  • 举报
回复
double ds[10][2];
总的个数=sizeof(ds)/sizeof(double);
//这样可以得到它的总个数,但是不能确定是n*m的,即ds[10][2]和ds[2]10]分配的存储空间是一样大的,这样即使ds[n][m]的总个数满足你的要求,如果n、m不能满足你的要求的话,通过d[i][j]访问会出问题。不过也可以在知道总个数的情况下,通过指针的方式访问ds[n][m],因为数组的存储空间是连续的。
flysundy 2003-02-28
  • 打赏
  • 举报
回复
sizeof只能对数组的吧,
whhif 2003-02-28
  • 打赏
  • 举报
回复
是不能用sizeof来检查指针的,那也只是指针的大小而已.
lbaby 2003-02-28
  • 打赏
  • 举报
回复
错了
上边我说的也错了--"一维字符串除外"(不能除外啊)--这个也无法保证传入的是合法的存储空间
winco 2003-02-28
  • 打赏
  • 举报
回复
好像不行吧:)
windcsn 2003-02-28
  • 打赏
  • 举报
回复
对指针sizeof好象只能得到指针类型的大小,还是用结构
luckyum 2003-02-28
  • 打赏
  • 举报
回复
我想用指针的指针说不定可以办到。
CalcLx20CodeBar(char * const pData,double* dout[29][2])
double ds[10][2];
char c[]="abcdefg;"
CalcLx20CodeBar(c,&ds);
*dout是一维,**dout为二维
看看sizeof(*dout)和sizeof(**dout)是不是29和2
Linux2001 2003-02-28
  • 打赏
  • 举报
回复
传递多维数组这样定义
double &dout[][2]
然后在函数中用循环检查传递进来的是否是[29][2]就可以了
lbaby 2003-02-28
  • 打赏
  • 举报
回复
这个正是一般数组(一维字符串除外)无法做到的

为什么不用一个struct

或class 呢

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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