+ -
当前位置:首页 → 问答吧 → 源下载sun-java6-jre好慢啊……

源下载sun-java6-jre好慢啊……

时间:2010-09-16

来源:互联网

代码:
#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] 是同一个地址吗??
如果想用函数求出数组长度如何做

作者: mailman   发布时间: 2010-09-16

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] 是同一个地址吗??
如果想用函数求出数组长度如何做





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

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

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

作者: wzssyqa   发布时间: 2010-09-16

sizeof(ar) = sizeof(int *)
sizeof(ar[0]) = sizeof(int)

无法取得数组长度

作者: Strange   发布时间: 2010-09-16