Pav*_*lev 39
如果您的数组在范围内,则可以使用它sizeof来确定其大小(以字节为单位)并使用除法来计算元素数:
#define NUM_OF_ELEMS 10
int arr[NUM_OF_ELEMS];
size_t NumberOfElements = sizeof(arr)/sizeof(arr[0]);
如果您将数组作为函数参数接收或在堆中分配数组,则无法使用该数据确定其大小sizeof.你必须以某种方式存储/传递大小信息才能使用它:
void DoSomethingWithArray(int* arr, int NumOfElems)
{
    for(int i = 0; i < NumOfElems; ++i) {
        arr[i] = /*...*/
    }
}
she*_*ngy 17
int a[20];
int length;
length = sizeof(a) / sizeof(int);
并且您可以使用其他方法使您的代码不被硬编码 int
假如你有一个数组 array
你只需要:
int len = sizeof(array) / sizeof(array[0]);
Der*_*rek 10
我个人认为sizeof(a)/ sizeof(*a)看起来更干净.
我也更喜欢将它定义为宏:
#define NUM(a) (sizeof(a) / sizeof(*a))
然后你可以在for循环中使用它,因此:
for (i = 0; i < NUM(a); i++)
超级容易。
只需使用 将分配的字节数除以数组数据类型的字节数即可sizeof()。
例如,给定一个名为的整数数组 myArray
int numArrElements = sizeof(myArray) / sizeof(int);
现在,如果你的阵列的数据类型是不恒定的,并可能发生变化,则使方程使用除数的第一个值的大小作为数据类型的大小。
例如:
int numArrElements = sizeof(myArray) / sizeof(myArray[0]);
这样,代码是类型不可知的,无论数组的数据类型如何,都可以正常运行。
小智 6
除非是字符数组,否则无法找到数组中的元素数.考虑以下示例:
int main()
{
    int arr[100]={1,2,3,4,5};
    int size = sizeof(arr)/sizeof(arr[0]);
    printf("%d", &size);
    return 1;
}
即使元素数为5,上面的值也给出了值100.如果它是一个字符数组,您可以线性搜索数组末尾的空字符串,并在您通过时增加计数器.
小智 5
但是您可以使用 sizeof 运算符找到数组长度或大小。
因为当我们初始化一个数组编译器时,会像 a[10](10 个大小为 4 的块)一样在我们的程序上分配内存,如果我们将某个值放入某个索引中,例如 a[0]=1,a[1],则每个块都有垃圾值=2,a[3]=8; 和其他块有垃圾值,没有人可以分辨哪个值是垃圾,哪个值不是垃圾 ,这就是我们无法计算数组中有多少元素的原因。我希望这会帮助你理解。小概念
| 归档时间: | 
 | 
| 查看次数: | 171354 次 | 
| 最近记录: |