【ARM 嵌入式 C 入门及渐进 14.1 -- 计算数组大小的宏实现】

本文介绍了如何在C语言中使用宏定义来计算数组大小,通过sizeof操作符除以元素大小。然而,此方法不适用于动态分配的数组或指针,只适用于作用域内定义的静态数组。
摘要由CSDN通过智能技术生成


请阅读【嵌入式开发学习必备专栏 】


计算数组大小的宏实现

在 C 语言中,可以定义一个宏来计算一个数组的大小(即数组中的元素数量)。请注意,这个宏只能用于数组,不能用于指针。以下是一个宏定义的例子:

#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

这个宏利用了 sizeof 操作符,它可以返回数组总大小(以字节为单位)以及数组中第一个元素的大小。通过除以第一个元素的大小,我们得到了数组中元素的数量。
下面是如何使用这个宏的示例:

#include <stdio.h>
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

int main(void) 
{
    int my_array[] = {1, 2, 3, 4, 5};
    printf("The array has %lu elements.\n", ARRAY_SIZE(my_array));
    return 0;
}

在这个例子中,当编译并运行程序,它将输出数组的大小,即元素的数量。

这个宏可能无法正确计算动态分配的数组或指针引用的大小,因为 sizeof 对于指针仅返回指针类型的大小,而不是它所指向的内存块的大小。这个宏只能用于作用域中定义的真正的数组。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值