数组名称作为函数的形式参数

thulongkang 2012-07-23 05:32:01
情况(1):
我定义了一个函数:void func(int *A[]){....}
其中函数体内有一句话:int size=sizeof(A),我想问的是,这样得出来的size是不是A指针数组里面的实际的元素个数?

情况(2):
我同样定义了一个函数,void func(int *arr){....},但是,我传入的实参是一个整型数组,那么,仍然是那句话int size=sizeof(arr),我能得出传入的实参数组的元素个数是多少么?
...全文
289 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
OldCloudM 2012-07-24
  • 打赏
  • 举报
回复
情况1:sizeof(A)的值为指针所占的空间,32位下为4。
thulongkang 2012-07-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

字体颜色A旁边 插入源码
[/Quote]原来这么简单
自信男孩 2012-07-24
  • 打赏
  • 举报
回复
传入的数组名参数是一个地址,编译器在解析时是作为一个首地址处理的。
fzamygsd 2012-07-23
  • 打赏
  • 举报
回复
数组名是一个抽象的概念,直接 sizeof()的时候,它代表这个数组类型,得到的是整个数组大小,
以参数传递的时候,它会退化成指针,存放数组首地址。。。。。

数组名这个东西你得先搞清楚

443692487 2012-07-23
  • 打赏
  • 举报
回复
这个分析下就能出来的啊,自己写个程序就知道了的。。。
fzamygsd 2012-07-23
  • 打赏
  • 举报
回复
字体颜色A旁边 插入源码
thulongkang 2012-07-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

一般传递数组都是两个参数一个是数组的首地址也即是数组名,另一个参数是数组元素的个数,为的是防止越界访问
C/C++ code

int n[10];
void sort(int *p, int n);
sort(n, 10);
[/Quote]值得学习,另外我想问一下,你们是怎么在帖子中贴代码的??
hnzmdzcm 2012-07-23
  • 打赏
  • 举报
回复
一般传递数组都是两个参数一个是数组的首地址也即是数组名,另一个参数是数组元素的个数,为的是防止越界访问

int n[10];
void sort(int *p, int n);
sort(n, 10);


atuwang 2012-07-23
  • 打赏
  • 举报
回复
常用void func(int *ArrayPtr,int LengthofArray){....}
ppsharp 2012-07-23
  • 打赏
  • 举报
回复
得到的都是指针的长度,32系统是size的结果是4。

传递数组可以增加一个形参,表示数组的长度。
或者传递数组的首指针和尾指针+1
thulongkang 2012-07-23
  • 打赏
  • 举报
回复
能否说明一下原因?不太懂啊!
  • 打赏
  • 举报
回复
1 不是
2 也不能得到数组元素个数

64,654

社区成员

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

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