|

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
: a6 Y; Y _& X' |
+ O1 H# K3 w4 @" q ?9 l6 u; @7 i) T% @; `
23pqpi1fvmz64077266325.png
|
|