当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 5 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 函数求数组长度,如何做
帖子发表于 : 2010-09-16 12:35 

注册: 2005-12-13 19:40
帖子: 51
送出感谢: 2
接收感谢: 0 次
代码:
#include<stdio.h>
int sum(int ar[]);
int main(void){
    int a[] = {1,2,3,4,5,6};
    //printf( "%d \n",sizeof a / sizeof a[0] );
    sum( a );
}
int sum(int ar[]){
    int index ;
    //index = (sizeof ar / sizeof ar[1]);
    //printf("%d \n", index);
    printf("%zd \n",sizeof ar);
    printf("%zd \n",sizeof ar[0]);
}

输出结果是 4 4 。为什么。ar[] 和ar[0] 是同一个地址吗??
如果想用函数求出数组长度如何做


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 函数求数组长度,如何做
帖子发表于 : 2010-09-16 12:41 
头像

注册: 2008-04-07 17:36
帖子: 4010
地址: 泰安人在阜新
送出感谢: 0 次
接收感谢: 0 次
mailman 写道:
代码:
#include<stdio.h>
int sum(int ar[]);
int main(void){
    int a[] = {1,2,3,4,5,6};
    //printf( "%d \n",sizeof a / sizeof a[0] );
    sum( a );
}
int sum(int ar[]){
    int index ;
    //index = (sizeof ar / sizeof ar[1]);
    //printf("%d \n", index);
    printf("%zd \n",sizeof ar);
    printf("%zd \n",sizeof ar[0]);
}

输出结果是 4 4 。为什么。ar[] 和ar[0] 是同一个地址吗??
如果想用函数求出数组长度如何做



:em20 :em20 :em20 :em20 :em20

1.你输出的是 指针数据类型和 int 类型所占的字节数。
说明在你的机器上,这两个都是4。

2. 这个不确定,得看编译器,所以,不要对其做任何假设

3. 谭的教科书上说的是可以用 sizeof,但实际个上也与编译器有关。
或者说,实际上是没法求的,如果需要一个数组的长度,就作为一个参数传递到函数中去。


_________________
宇宙数学物理 sssssssss Ubuntu 桌面培训 sssssssss 问打包的问题之前先看
和我一样的新手请看,我看过了,腰不酸了,腿不疼了,上楼也有劲了
想去IRC的点这里——一个比QQ群好N多的东西


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 函数求数组长度,如何做
帖子发表于 : 2010-09-16 12:42 
头像

注册: 2006-05-19 9:54
帖子: 1823
地址: Shanghai
送出感谢: 2
接收感谢: 11
sizeof(ar) = sizeof(int *)
sizeof(ar[0]) = sizeof(int)

无法取得数组长度


_________________
ニンニク入れますか?
x60 with gentoo


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 函数求数组长度,如何做
帖子发表于 : 2010-09-19 16:54 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
用malloc分配的动态数组,无法获取长度,只能由你记住

an[常量]定义的数组,可以通过 sizeof(an)/sizeof(an[0]) 获取长度
但这个是在an的作用域中才可以实现

楼主你的是通过一个参数调用的情况,传过去的是一个指针,数组长度无法求出了


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 函数求数组长度,如何做
帖子发表于 : 2010-09-19 18:43 
头像

注册: 2008-11-05 13:24
帖子: 1024
送出感谢: 0 次
接收感谢: 5
#define len(array) (sizeof(array)/sizeof(array[0]))


_________________
笔记
-------------------------------------
http://blog.163.com/wqt_1101


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 5 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译