嵌入式工程师常见C语言手写面试题,摘录于RTT内核源码
memset()函数原型是extern void *memset(void *buffer, int c, int count)
头文件:#include <string.h>
buffer:为指针或是数组,
c:是赋给buffer的值,
count:是buffer的长度
一般用来进行初始化,memset可以方便的清空一个结构类型的变量或数组
不建议用来干别的。。。。。。因为。。。。。。。哈哈你试下就知道
memset是一个字节一个字节的设置,所以你想设置为1的时候,你就会得到0x01010101
void *memset(void *s, int c, rt_ubase_t count)
{
char *xs = (char *)s;
while (count--)
*xs++ = c;
return s;
}
更加详细的memset使用可以跳到这个大兄弟的博客: https://blog.csdn.net/qq_27522735/article/details/53374765
原型:extern void *memcpy(void *dest, void *src, unsigned int count);
头文件:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针。
有一点要注意的事判断源地址和目的地址的大小,才决定到底是从高地址开始拷贝还是低地址开始拷贝
void *memcpy(void *dst, const void *src, int count)
{
char *tmp = (char *)dst, *s = (char *)src;
int len;
if (tmp <= s || tmp > (s + count))
{
while (count--)
*tmp ++ = *s ++;
}
else
{
for (len = count; len > 0; len --)
tmp[len - 1] = s[len - 1];
}
return dst;
}
更加详细的memset使用可以跳到这个大兄弟的博客:https://blog.csdn.net/qq_35040828/article/details/71123521
原型:extern void *memmove(void *dest, const void *src, unsigned int count);
用法:#include <string.h>
功能:由src所指内存区域复制count个字节到dest所指内存区域。
说明:src和dest所指内存区域可以重叠。
void *memmove(void *dest, const void *src, rt_ubase_t n)
{
char *tmp = (char *)dest, *s = (char *)src;
if (s < tmp && tmp < s + n)
{
tmp += n;
s += n;
while (n--)
*(--tmp) = *(--s);
}
else
{
while (n--)
*tmp++ = *s++;
}
return dest;
}
更加详细的memset使用可以跳到这个大兄弟的博客:https://blog.csdn.net/zgaoq/article/details/54586049
原型:extern int memcmp(void *buf1, void *buf2, unsigned int count);
用法:#include <string.h>
功能:比较内存区域buf1和buf2的前count个字节。
说明:当buf1<buf2时,返回值<0当buf1=buf2时,返回值=0当buf1>buf2时,返回值>0
int memcmp(const void *cs, const void *ct, int count)
{
const unsigned char *su1, *su2;
int res = 0;
for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
if ((res = *su1 - *su2) != 0)
break;
return res;
}
原型:extern int strnlen(const char *s, int maxlen)
用法:#include <string.h>
功能:获取s的长度,指定maxlen。
说明:返回长度。
int strnlen(const char *s, int maxlen)
{
const char *sc;
for (sc = s; *sc != '\0' && sc - s < maxlen; ++sc) /* nothing */
;
return sc - s;
}
同上
int strlen(const char *s)
{
const char *sc;
for (sc = s; *sc != '\0'; ++sc) /* nothing */
;
return sc - s;
}
原型:char *strstr(const char *s1, const char *s2)
用法:#include <string.h>
功能:功能就是找出在字符串str1中第一次出项字符串str2的位置(也就是说字符串sr1中要包含有字符串str2)
说明:找到就返回该字符串位置的指针(也就是返回字符串str2在字符串str1中的地址的位置),找不到就返回空指针(就是 null)
char *strstr(const char *s1, const char *s2)
{
int l1, l2;
l2 = strlen(s2);
if (!l2)
return (char *)s1;
l1 = strlen(s1);
while (l1 >= l2)
{
l1 --;
if (!memcmp(s1, s2, l2))
return (char *)s1;
s1 ++;
}
return NULL;
}
更加详细的memset使用可以跳到这个大兄弟的博客:https://blog.csdn.net/u013298384/article/details/24839727
原型:long atoi(const char *str)
用法:#include <string.h>
功能:把字符串转换成数字
说明:不是rtt的内核源码
long atoi(const char *str)
{
long res = 0;
while(*str >= '0' && *str <= '9')
{
res = res*10 + *str -'\0';
str++;
}
return res;
}
更加详细的memset使用可以跳到这个大兄弟的博客:https://blog.csdn.net/gettogetto/article/details/49708419
上面的代码可以到这里下载:https://download.csdn.net/download/weixin_38452632/10677930
rtt的内核源码可以到这里下载:https://www.rt-thread.org/
嵌入式工程师常见C语言手写面试题,摘录于RTT内核源码相关推荐
- ElasticSearch——手写一个ElasticSearch分词器(附源码)
1. 分词器插件 ElasticSearch提供了对文本内容进行分词的插件系统,对于不同的语言的文字分词器,规则一般是不一样的,而ElasticSearch提供的插件机制可以很好的集成各语种的分词器. ...
- 手写一个微前端框架(内含源码地址)
来源:伊撒尔 https://zhuanlan.zhihu.com/p/169800579 halo,大家好,我是 132,前阵子冥思了一会儿微前端,然后周六日趁热打铁,马上写了一个微前端框架,名叫 ...
- 上班聊天,摸鱼神器,手写一款即时通讯工具(附源码!!!)
文章目录 即时通讯工具 客户端 服务端 1.链接 2.登录 3.其他方法 3.1.读取客户端的消息 3.2.给客户端发送消息 3.3.日志记录 3.4.工具集合 3.5.ChatSocket 服务端部 ...
- 【手写数字识别】RBM神经网络手写数字识别【含GUI Matlab源码 1109期】
⛄一.手写数字识别技术简介 1 案例背景 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性.由于手写体数字的随意性很大,如笔画粗细.字体大小. ...
- 【手写数字识别】基于matlab GUI BP神经网络单个或连续手写数字识别系统【含Matlab源码 2296期】
⛄一.手写数字识别技术简介 1 案例背景 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性.由于手写体数字的随意性很大,如笔画粗细.字体大小. ...
- 练手写的python 淘宝购物车秒杀器 源码,成品链接,效果图
#-*-coding:GBK -*- import os import winreg #操作注册表 import re import sys from tkinter import * from wi ...
- C语言手写栈、手写计算器
C语言实现表达式求值 文章结构 C语言手写栈Struct Stack 后缀表达式求值 中缀表达式转后缀表达式 文章结构 本文尝试通过纯C语言写一个计算器,在Visual Studio和VScode运行 ...
- C语言手写二叉树(链式存储结构)
C语言手写二叉树(链式存储结构) 二叉树结构 二叉树基本运算 代码 图例(main函数执行过程如下:) 阶段I 阶段II 阶段III 阶段IV 阶段V 先序遍历输出过程 二叉树结构 二叉树可以用顺序存 ...
- C语言手写自定义三维数组
C语言手写三维数组 本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleArray及其基本运算 本文目的是通过C语言的结构体和动态数组,实现自定义类型的三维数组TripleAr ...
- 10个常见的前端手写功能
10个常见的前端手写功能 1.防抖 2.节流 3.深拷贝 JSON方法 递归拷贝 4.手写Promise 5.异步控制并发数 6.继承 ES5 继承(寄生组合继承) ES6继承 7.数组排序 sort ...
最新文章
- 生物信息学 几个程序
- [原创]函数指针的应用
- matlab--曲线拟合
- mysql字段值后面有隐形字符_MySQL 隐形索引
- wxWidgets:编写非英语应用程序
- (五):C++分布式实时应用框架——微服务架构的演进
- vue key重复_Vue 前端面试题
- ExtJS 3.2 学习笔记(1)
- 联想7x04服务器装系统,联想硬盘保护EDU7X的安装方法.doc
- R语言:时间序列ARIMA模型使用
- 【活动报名】NEO 区块链公开课(1): NEO 区块链开发入门
- 浑水摸「YY」、「侠盗」苹果和辛巴的「麦乳精」|极客一周
- 滴滴悬赏百万寻凶,机智网友支付宝钓鱼转账杀害空姐明珠疑凶
- 极限中0除以常数_第七讲 极限存在准则和两个重要极限
- 使用AT89C51芯片实现生日快乐歌
- Unity SRP初识之URP
- HAUTOJ1062
- ps怎么把黑白照片变成彩色?ps把儿童黑白照变彩色教程
- Python win32com 操作word 插入回车符,换行符
- 小孔成像总结_备战中考|初中物理重要知识点总结,建议收藏!(下篇)
热门文章
- 有一个多项式:Pn(x)=a0x+a1x+….+anx(n=10),它们的系数存放在一个一维数组中,编写程序,输入系数和x的值,计算并输出Pn(x)的结果。
- 麦森数 OpenJ_Bailian - 2706
- APP启动时间检测——u-apm
- 如何测试app启动时间?
- zzuli:1000从今天开始入坑C语言
- python爬取京东商品评价信息
- SumatraPDF添加保存标注到TXT文本的功能
- 面试面经 | 2021大疆嵌入式软件工程师笔试题B卷
- 阿里云上的Docker容器镜像仓库
- 云账户合法吗_云支付合法吗?