请问一个数组边界的问题

lofe811 2006-08-05 04:01:33
假如我有一个函数
void aa(POINT *x ,int y ,POINT *z)
{
}
其中x是要输入的数组起始地址,y也是输入的数据
而z是要返回的数据起始地址,那我怎么才能判断x数组的大小,就是结尾???
还有z值返回了,也只是一个指针,那外面的函数怎么判断z的结尾???
是不是全部要附加数组的大小阿。。。???

另外 a[6]和a=malloc(sizeof(char)*6)这个申请的数组是一样的吗???
a[6]可以用6个,还有一个a[6];
后者也是不是有一个a[6]????
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lofe811 2006-08-05
  • 打赏
  • 举报
回复
谢谢,楼上的,那就只能去加入边界大小,不过很麻烦,特别是返回的z也要加大小,要不然也不知道大小。。。
另外char a[6]; 是'/0'为结束符
那int a[6] 或者结构体数组,其有没有结束符????最后一位填充的是什么???还是'/0'
lofe811 2006-08-05
  • 打赏
  • 举报
回复
a[6]是越界使用了,
可是它是存在的,我就怕malloc申请的数组没有a[6],
是不是malloc来的数组也存在a[6],


那是不是能根据a[6]来判断是否结尾???
如果a[6]无法使用,是否能多申请一位来保存特殊标志,来判断出界????
if_then_else_liao 2006-08-05
  • 打赏
  • 举报
回复
我觉得确有必要加上数组的大小,要不然没有办法知道可以访问多少个数据。

a[6]申请的数据是在栈上分配的,函数结束后要被释放。而用malloc分配则是在堆上分配的,如果忘了free它,则会造成内存泄露。
a[6]对两种情况都不会报错,但越界操作有无法预料的后果。
YFY 2006-08-05
  • 打赏
  • 举报
回复
a[6]可以用6个,还有一个a[6];?

a[6]越界使用得吧,虽然没有语法错误,但只能用1-5吧。

函数里面不能判断,你只能传进去或已知固定大小。
healer_kx 2006-08-05
  • 打赏
  • 举报
回复
一样大。
x的大小,你肯定要传递过去才行了,C语言就是这样的。

69,369

社区成员

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

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