电子产业一站式赋能平台

PCB联盟网

搜索
查看: 137|回复: 0
收起左侧

C语言求数组长度的5种方法

[复制链接]

397

主题

397

帖子

2461

积分

三级会员

Rank: 3Rank: 3

积分
2461
发表于 2023-11-18 21:00:00 | 显示全部楼层 |阅读模式

pokidauftqn64077266125.png

pokidauftqn64077266125.png

2 s8 I) q. R+ J, ~% O( P# ~" m4 v" t  d. Q8 Z
1,使用 sizeof 运算符5 V, M: J9 K' T7 _3 x* r' ]
  • #include 7 B5 i9 l% k# i4 F' K( [) }
    int main() {    int array[] = {1, 2, 3, 4, 5};    unsigned char length = sizeof(array) / sizeof(array[0]);; v+ ]" t1 a. F  J  y9 Z) G
        printf("Array length: %d# T; g' D7 [& S
    ", length);( \( d: t: |3 p' g0 x
        return 0;}解析:sizeof(array) 返回整个数组的字节大小,sizeof(array[0]) 返回数组中一个元素的字节大小。通过相除可以得到数组的元素个数。2,使用宏定义
    ) ^8 O  d9 [  J" C* w8 b* Q7 m! ~
  • #include
    / s& `3 \# \0 g& O$ Q2 {#define ARRAY_LENGTH(arr) (sizeof(arr) / sizeof(arr[0]))' e0 Q1 i$ A- k2 l
    int main() {    int array[] = {1, 2, 3, 4, 5};    unsigned char length = ARRAY_LENGTH(array);
    : _" ?* F- ~2 C; @    printf("Array length: %d
    9 _; L/ a- y$ e9 ]* O", length);* y9 s& {% ^% V. O0 X. m
        return 0;}    解析:这里使用了宏定义,将获取数组长度的操作封装在 ARRAY_LENGTH 中,使得代码更具可读性。) A: i- D7 G2 s8 P( E
    # c% ?2 p. [0 s7 U9 t' _
    3,传递数组和数组长度给函数
    0 {  S. [3 f! `8 R. M8 j' w/ H. ?" X
  • #include 8 ?' @+ O' |- b; x& T
    unsigned char getArrayLength(int *arr, size_t size) {    return size;}2 G, s( N- y6 i
    int main() {    int array[] = {1, 2, 3, 4, 5};    unsigned char length = getArrayLength(array, sizeof(array) / sizeof(array[0]));+ A% h! @  l& Y
        printf("Array length: %d9 a+ H$ U; j6 ^0 u
    ", length);        return 0;}解析:函数 getArrayLength 接受一个指向整数的指针和数组的大小,然后直接返回数组的大小。
    ! T$ Y3 O, X/ ?+ a7 Z" B* m& y; r5 V4 k4,使用 strlen(适用于字符串数组)
    - ?- L! X( P1 u& k0 X, ?
  • #inlude #include ' w9 u: g- y1 ^
    int main() {    char strArray[] = "Hello, World!";    unsigned char length = strlen(strArray);
    ' V3 E3 B7 s% e* h    printf("String Array length: %d
    8 u. T; |% O0 v/ ?7 x: A0 w6 Z: O", length);
    ! P- E, g' V5 B6 Y# L' H' G    return 0;}解析:strlen 函数用于计算字符串的长度,适用于以 null 结尾的字符串数组。. g# B- \8 L$ G9 g5 V, B0 I
    4 Q6 p; k. e0 D0 f
    5,使用指针
    3 w9 y# T2 X- @1 Z3 t4 v
  • #include
    9 |8 I; n9 F. L& z  I! Eint main() {    int array[] = {1, 2, 3, 4, 5};    int *ptr = array;    unsigned char length = sizeof(array) / sizeof(*ptr);
    4 Q; B* m' x0 u5 q) i+ ^    printf("Array length: %d
    + |& q% @5 @, V) p", length);# [2 z0 I: L" \- V8 C* E& ?5 k7 d6 E2 E
        return 0;}解析:将数组的首地址赋给指针,然后通过指针进行操作。这里同样使用了 sizeof 方法。==========
    % g8 m2 U& O0 n" T, D; w5 O往期回顾:寄存器开发,HAL开发和LL开发的区别和参考代码对应届大学生找工作的建议+ k1 b* w6 H( ~' w3 C/ ?, h# O
    KEIL 开发技巧9 F1 t0 B9 ^* K" |
    把一个MOS管制作成开关电路
    + k. z. J. O* G==========& N! {7 f: Z, E5 b7 u) y

    0wwsjglfz5u64077266225.png

    0wwsjglfz5u64077266225.png

    : a6 Y; Y  _& X' |
    + O1 H# K3 w4 @" q  ?9 l6 u; @7 i) T% @; `

    23pqpi1fvmz64077266325.png

    23pqpi1fvmz64077266325.png
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表