【C语言基础】内存的初始化

我们编写C语言的时候需要给变量申请一块内存区域,当我们创建一个内存区域的时候,内存中的数据十有八九是乱七八糟的(因为其他代码用过后遗留的数据并没有及时清掉)

int main()

{

char str[10];//分配的10个字节的内存可能被用过;

printf("%s\n",str);//这个代码打印出来的可能就是乱码,因为printf的%s是“打印一直遇到'\0'"

return 0;

}

那么,有什么方法可以解决呢?

这里有两种解决问题的方法:

第一种:

使用menset函数为新申请的内存做初始化工作

menset(void*,要填充的数据,要填充的字节个数)

int main()

{

char str[10];//编译器自动分配10个字节的内存大小

memset(str,0,sizeof(str));//sizeof()计算字节大小

printf("%s\n",str);

return 0;

}

第二种:

char str[10] ={0}; 对于长度为10字节的这段内容全部填充为0。原理:int num[10]={6,8,5};//前三个分别填充6、8和5,之后都填充为0;

最后补充:

void *memset(void *str, int ch, size_t n);

函数解释:将str中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 str 。memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。

memset是计算机中C/C++语言函数。将s所指向的某一块内存中的前n个 字节的内容全部设置为ch指定的ASCII值, 第一个值为指定的内存地址,块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向s的指针。

转自:http://blog.csdn.net/baidu_34919559/article/details/51341053

原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2018-03-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏康怀帅的专栏

PHP 日期相关函数

设置时区 date_default_timezone_get(); date_default_timezone_set('PRC'); 时间戳 time();...

2754
来自专栏北京马哥教育

Python 算法实战系列:栈

学Python最简单的方法是什么?推荐阅读:Python开发工程师成长魔法 栈(stack)又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并...

3008
来自专栏领域驱动设计DDD实战进阶

07-TypeScript的For循环

在传统的JavaScript中,关于循环,可以有两种方式,一种是forEach,一种是for。 forEach的用法如下: var sarr=[1,2,3,4]...

2744
来自专栏老司机的技术博客

人人都能学会的python编程教程8:条件判断与循环

实际的项目中条件判断可以说是使用最多的语法之一了,不管是最简单的判断还是负责的业务逻辑和算法,条件判断都如影随形。

1.1K10
来自专栏liulun

Nim教程【九】

向关注这个系列的朋友们,道一声:久违了! 它并没有被我阉掉,他一定会得善终的,请各位不要灰心 Set集合类型 为了在特殊场景下提高程序的性能设置了Set类型,...

17510
来自专栏Java技术

初探Java源码之LinkedList

上篇文章我们分析了常见的ArrayList源码,它的内部是由一个数组来实现的。那么今天,我们来分析另一个常见的类LinkedList。本文分析都来自Java8。...

892
来自专栏xingoo, 一个梦想做发明家的程序员

Elasticsearch聚合 之 Histogram 直方图聚合

Elasticsearch支持最直方图聚合,它在数字字段自动创建桶,并会扫描全部文档,把文档放入相应的桶中。这个数字字段既可以是文档中的某个字段,也可以通过脚...

18210
来自专栏逸鹏说道

SQL Server 索引和表体系结构(聚集索引+非聚集索引)

聚集索引 概述 关于索引和表体系结构的概念一直都是讨论比较多的话题,其中表的各种存储形式是讨论的重点,在各个网站上面也有很多关于这方面写的不错的文章,我写这...

2939
来自专栏web前端教室

老尚,能讲讲闭包么?“可以,没问题,马上”

到今天,零基础课程中的电商网站项目的部分,基本都结束了。现在这个电商网站的结构变成了下面这样, ? (缩略图,请谅解) 接下来的日子开始node以及其它方面的内...

1836
来自专栏老司机的技术博客

宝宝都能学会的python编程教程8:条件判断与循环

先公布上期编程练习的答案,没错,L是一个指向三个列表的二维元祖。 条件判断 实际的项目中条件判断可以说是使用最多的语法之一了,不管是最简单的判断还是负责的业务逻...

3235

扫描关注云+社区