博客
关于我
memset
阅读量:809 次
发布时间:2019-03-26

本文共 1117 字,大约阅读时间需要 3 分钟。

小弟学识不精,就了解这么多。

最近在学习C语言的时候,或许多了不少收获,其中关于数组初始化和递推的理解对我来说是一个亮点。通过不断的实践与探索,逐渐掌握了这项技术的真正含义。

对于这篇文章中的代码片段

#include 
#include
#include
int main(void) { int n, b; int a[100], i; scanf("%d", &b); //读取输入的值b memset(a, 0, sizeof(a)); //初始化数组a为0 a[0] = 1; a[1] = 1; a[2] = 1; for(i = 3; i < b; i++) { a[i] = a[i - 1] + a[i - 3]; } printf("%d", a[i - 1]); //输出结果 return 0;}

我理解到,这段代码实际上是在模拟一个递推关系,从第三个元素开始,每个元素等于前一个元素加上前第三个元素的值。数组的长度根据输入值b来决定,最终输出的是倒数第二个元素的值。

在编程过程中,有一个细节值得关注:memset()函数可以用来初始化整数数组为0,但值只能是0或-1。在代码中看到

memset(a, 0, sizeof(a));

这很好地初始化了所有数组元素为0,这对后续的计算非常有帮助。

需要注意的是,在代码运行时,i变量会超出数组范围吗?当i达到b-1的时候,数组的最后一个元素正好是a[b-1],此时数组大小是100,b的值不会超过100,否则会导致数组越界。不过这在实际应用中应当谨慎处理。

对于代码的优化,有一种技巧是直接写一个循环去覆盖所有需要处理的项:

for(i = 3; i < 100; i++) {    a[i] = a[i - 1] + a[i - 3];}

这样代码更简洁地展示了递推规则。

另外一个示例是关于字符数组的初始化:

memset(a, '-', sizeof(a));printf("%c", a[4]);

这里memset用法更加直接,将整个数组初始化为连续的'-'字符。这种方法在内存对齐要求不高的情况下非常高效。

通过反复练习和理解这些代码片段,我逐渐掌握了如何通过递推关系解决实际问题,同时也对memset函数的应用有了更深入的了解。

在日常开发中,这样的数组递推技巧在处理动态规划、斐波那契数列、或其他递归关系的问题时都有其实际意义。以后在遇到类似问题时,我相信自己能够更从容地应对了。

转载地址:http://bnhyk.baihongyu.com/

你可能感兴趣的文章
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡器处理session共享的几种方法(转)
查看>>
nginx负载均衡的5种策略(转载)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx运维与实战(二)-Https配置
查看>>
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>