【C语言进阶】字节数组的另一种写法
【C语言进阶】字节数组的另一种写法
本文给你介绍一种C语言中字节数组的写法,也许你还没见过?
1 示例代码
话不多说,我们直接来看示例代码:
#include <stdio.h>
int main(int argc, const char *argv[])
{
unsigned char i;
unsigned char array0[] = {0x12, 0x34, 0x56, 0x78, 0x90};
unsigned char array1[] = "\x12\x34\x56\x78\x90";
for (i = 0; i < 5; i++) {
printf("%02x ", array0[i]);
}
printf("\n");
for (i = 0; i < 5; i++) {
printf("%02x ", array1[i]);
}
printf("\n");
return 0;
}
2 代码解读
这个demo例子其实很简单,就是用两种方式定义了字节数组:
-
方式1:
使用的是传统数组的定义方式,
unsigned char array0[] = {0x12, 0x34, 0x56, 0x78, 0x90}; -
方式2:
采用的是比较罕见的定义方式,
unsigned char array1[] = "\x12\x34\x56\x78\x90";
这里的 “\x12\x34\x56\x78” 其实是利用了 \x 转移字符,它表示的含义与第一种方式定义字节数组是一样的。
我们来跑一下这个demo:
12 34 56 78 90
12 34 56 78 90
我们可以清晰看到,输出结果是一样的。

3 总结
C语言的很多语法是比较灵活的,有时候换一种写法,我们也应该要知道其本质含义。
就像本文介绍的这种定义字节数组的写法,在某些场合下,还是很管用的,就如我之前接手的一个项目,到处都是这种常量数组的定义。
好了,本文的介绍就到这了,知识点你都get到了吗?
4 更多分享
架构师李肯(全网同名),一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得RT-Thread官方技术社区原创技术博文优秀奖,荣获CSDN博客专家、CSDN物联网领域优质创作者、2021年度CSDN&RT-Thread技术社区之星、2022年RT-Thread全球技术大会讲师、RT-Thread官方嵌入式开源社区认证专家、RT-Thread 2021年度论坛之星TOP4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!
- 点赞
- 收藏
- 关注作者
评论(0)