奇怪的结果得到数组的长度

时间:2014-01-18 18:12:42

标签: c

为什么返回长度为8 ??

#include <stdio.h>

int getLength(char arr[]) {
    return sizeof(arr) / sizeof(arr[0]);
}

char text[] = "1234567890123456789";

int main (void) {
    int i;

    int e=getLength(text);
    printf("%d\n",e);
    for (i = 0; i < e; i++) {

        printf("%c\n", text[i]);
    }

    return 0;
}

2 个答案:

答案 0 :(得分:2)

因为当您将数组作为参数传递时,它会衰减为指针。所以sizeof(arr)产生指针的大小(在你的架构上是8个字节),而不是数组的整个大小。

答案 1 :(得分:-2)

因为sizeof(array)会给你数组指针的大小而不是数组本身的实际大小。