易百教程

72、如何在不使用 sizeof 运算符的情况下在 C 中计算出数组的大小?

方法一:

#include <stdio.h>
int main(int argc, char *argv[])
{
    int iTotalElement = 0 ;
    int  aiData[] = {10, 20, 30, 40, 50, 60};
    //Calculate numbers of elements using pointer arithmatic
    iTotalElement = *(&aiData + 1) - aiData;
    printf("Number of element = %d",iTotalElement);
    return 0;
}

输出结果如下:

Number of element = 6

方法二

#include <stdio.h>
// User created size of operator
#define SIZEOF(Var) ((char*)(&Var + 1) -(char*)&Var)
int main(int argc, char *argv[])
{
    int iTotalElement = 0 ;
    int  aiData[] = {10, 20, 30, 40, 50, 60};
    iTotalElement = SIZEOF(aiData)/SIZEOF(aiData[0]);
    printf("Number of element = %d",iTotalElement);
    return 0;
}

输出结果如下:

Number of element = 6