C语言指针数组实际应用(嵌入式)
创始人
2024-06-01 12:08:37
0

C语言指针数组详细学习

指针是C语言中非常重要的概念之一,它可以让我们直接访问内存中的数据。指针数组则是由多个指针组成的数组,每个指针都可以指向内存中的某个位置。以下是一些指针数组的实际代码应用:

字符串数组

char* names[] = {"Alice", "Bob", "Charlie"};for (int i = 0; i < 3; i++) {printf("%s\\n", names[i]);
}

上述代码定义了一个字符串指针数组,其中每个指针都指向一个字符串常量。我们可以使用一个for循环遍历整个数组并打印出每个字符串。

函数指针数组

int add(int a, int b) {return a + b;
}int subtract(int a, int b) {return a - b;
}int multiply(int a, int b) {return a * b;
}int (*operations[3])(int, int) = {add, subtract, multiply};int result = operations[0](3, 4); // result = 7

上述代码定义了一个函数指针数组,其中每个指针都指向一个接受两个int参数并返回int类型的函数。我们可以使用这个数组来动态选择要调用的函数。

指针数组作为结构体成员

typedef struct {char* name;int age;
} Person;Person people[3] = {{"Alice", 20},{"Bob", 25},{"Charlie", 30}
};char* names[3] = {"Alice", "Bob", "Charlie"};for (int i = 0; i < 3; i++) {people[i].name = names[i];printf("%s is %d years old\\n", people[i].name, people[i].age);
}

上述代码定义了一个包含指针数组成员的结构体。我们可以使用一个for循环遍历整个数组,并将每个Person对象的name成员指向一个字符串常量。

以上是一些指针数组的实际代码应用,希望对大家有所帮助。

在嵌入式开发中,C语言数组的应用非常广泛。

以下是一些嵌入式开发中常见的数组应用场景,以及相应的代码实例。

存储传感器数据

在嵌入式系统中,经常需要使用传感器来采集数据。我们可以使用数组来存储传感器采集到的数据,然后进行相应的处理。例如,以下代码演示了如何使用数组来存储温度传感器采集到的数据,并计算出平均值。

#define NUM_SAMPLES 10int temperature[NUM_SAMPLES] = {25, 26, 27, 28, 29, 30, 31, 32, 33, 34};int sum = 0;
for (int i = 0; i < NUM_SAMPLES; i++) {sum += temperature[i];
}int average = sum / NUM_SAMPLES;

存储配置信息

在嵌入式系统中,经常需要存储一些配置信息,例如网络地址、端口号、设备ID等等。我们可以使用数组来存储这些信息。例如,以下代码演示了如何使用数组来存储网络地址信息。

#define IP_ADDRESS_LENGTH 4unsigned char ip_address[IP_ADDRESS_LENGTH] = {192, 168, 1, 100};

存储字符数据

在嵌入式系统中,经常需要处理字符数据。我们可以使用字符数组来存储字符数据,并进行相应的处理。例如,以下代码演示了如何使用字符数组来存储一个字符串,并将其打印出来。

char message[] = "Hello, world!";
printf("%s\\n", message);

以下是一个使用指针在C语言中实现串口发送数据的示例代码:

#include 
#include 
#include 
#include 
#include 
#include #define SERIAL_PORT "/dev/ttyUSB0" // 串口设备文件路径
#define BAUD_RATE B9600 // 串口波特率int main() {int fd = open(SERIAL_PORT, O_RDWR | O_NOCTTY | O_NDELAY); // 打开串口设备文件if (fd == -1) {perror("open");exit(1);}struct termios options; // 串口选项tcgetattr(fd, &options); // 获取当前的串口选项cfsetispeed(&options, BAUD_RATE); // 设置输入波特率cfsetospeed(&options, BAUD_RATE); // 设置输出波特率options.c_cflag |= (CLOCAL | CREAD); // 必须设置的选项options.c_cflag &= ~PARENB; // 禁用奇偶校验options.c_cflag &= ~CSTOPB; // 设置停止位为1options.c_cflag &= ~CSIZE; // 清除字符长度选项options.c_cflag |= CS8; // 设置字符长度为8位options.c_cc[VTIME] = 0; // 设置读取超时时间options.c_cc[VMIN] = 1; // 设置读取最小字节数tcsetattr(fd, TCSANOW, &options); // 设置新的串口选项char message[] = "Hello, world!"; // 要发送的数据int length = strlen(message); // 数据长度int bytes_written = write(fd, message, length); // 发送数据if (bytes_written == -1) {perror("write");exit(1);}close(fd); // 关闭串口设备文件return 0;
}

上述代码使用Linux系统的termios库设置了串口的各种选项,并使用write函数发送了一条消息。

相关内容

热门资讯

最新!印巴将再次会谈!巴基斯坦... 每经编辑|毕陆名 据央视新闻11日消息,当地时间5月10日,巴基斯坦总理夏巴兹·谢...
兰州市城关区前街社区:三大突破... 前街社区:三大突破助力打造防灾“样板间”  5月8日,城关区伏龙坪街道前街社区联合街道办事处、社区卫...
李家超率团抵达多哈展开访问行程... 经济观察网讯 据大湾区之声消息,5月11日,香港特区行政长李家超率领香港商贸代表和内地企业代表抵达多...
五一文旅成绩单喜人,金融一揽子... 转自:上观新闻5月6日至11日,“2025现代汽车·射箭世界杯赛-陆家嘴金融城上海站”在浦东新区火热...
17场精彩大戏正在上海上演! 作者:朱伟微信编辑:安通
小城荣昌,凭借一只鹅走红的背后 丨“这座城市有点东西”城市是经济活动的中心,是高质量发展的重要推动力,是经济中最具活力的因素。中新社...
燃情省城市足球联赛! 镇江队3... 转自:扬子晚报扬子晚报网5月11日讯(通讯员 周婷婷 顾学谦 记者 万凌云) 5月10日下午3时,随...
书香花语・与爱同行!南京鼓楼西... 母亲节是一个充满爱与温情的日子。5月10日,南京市鼓楼区凤凰街道西城岚湾社区依托 “阅岚湾——行走课...
马鞍山市原副市长黄化锋一审获刑... 近日,安徽省六安市中级人民法院对马鞍山市委原常委、市政府原党组副书记、副市长黄化锋犯受贿罪一案作出一...
锐评|为发论文窃取机密?卖国求... 转自:北京日报客户端为发外刊论文,竟安排学生实习窃密?11日,国家安全部披露一起偷贩涉密敏感数据案,...
英特尔确认终止 Deep Li... IT之家 5 月 11 日消息,英特尔确认 Alchemist 曾经的卖点之一 Deep Link ...
2025南师校友天团|南京市金... 转自:扬子晚报@高考生,你家书记校长喊你上南师啦!5月8日起,南京师范大学本科招生办公室联合扬子晚报...
联动巡视期间,董志向官宣落马 武汉市纪委监委5月10日晚消息,武汉旅游体育集团有限公司原党委书记、董事长董志向涉嫌严重违纪违法,目...
事关固态电池!下周多场技术大会...   下周,电池行业即将召开多场技术大会。  第十七届深圳国际电池技术交流会/博览会(CIBF2025...
快自查!这些App被通报 近日中央网信办发布关于15款App和16款SDK个人信息收集使用问题的通报墨迹天气tv版、企鹅天气和...
直击零售业博览会,实探支付科技... 南方财经全媒体记者 黄子潇 深圳报道支付公司推销充电宝、“哪吒敖丙”空降展台、现场搭建便利店.......
传习录丨勿忘人间真情 来源:央视新闻客户端 01:06“慈母手中线,游子身上衣...
房山第一书记喊你赶集啦…… 为进一步拓宽农产品销售渠道,更好宣传房山文旅资源,近日,在区委组织部、青龙湖镇党委的大力协调下,驻村...
海南临高县遇强风仓库被掀顶 转自:新京报我们视频 【#海南临高县遇强风仓库被掀顶#】...
在网红打卡点挖萤石,杭州9岁男... 本文来自微信公众号“大象新闻”5月10日下午1点30分左右,杭州消防接到报警:余杭四岭村千岱坑萤石矿...