定义变量时一定要进行初始化,尤其是数组和结构体这种占用内存大的数据结构。在使用数组的时候经常因为没有初始化而产生“烫烫烫烫烫烫”这样的野值,俗称“乱码”。

每种类型的变量都有各自的初始化方法,memset() 函数可以说是初始化内存的“万能函数”,通常为新申请的内存进行初始化工作。它是直接操作内存空间,mem即“内存”(memory)的意思。该函数的原型为:

# include <string.h>
void *memset(void *s, int c, unsigned long n);
函数的功能是:将指针变量 s 所指向的前 n 字节的内存单元用一个“整数” c 替换,注意 c 是 int 型。s 是 void* 型的指针变量,所以它可以为任何类型的数据进行初始化。 memset() 的作用是在一段内存块中填充某个给定的值。因为它只能填充一个值,所以该函数的初始化为原始初始化,无法将变量初始化为程序中需要的数据。用memset初始化完后,后面程序中再向该内存空间中存放需要的数据。 memset 一般使用“”初始化内存单元,而且通常是给数组或结构体进行初始化。一般的变量如 char、int、float、double 等类型的变量直接初始化即可,没有必要用 memset。如果用 memset 的话反而显得麻烦。 当然,数组也可以直接进行初始化,但 memset 是对较大的数组或结构体进行清零初始化的最快方法,因为它是直接对内存进行操作的。 memset 函数的第三个参数 n 的值一般用 sizeof() 获取,这样比较专业。注意,如果是对指针变量所指向的内存单元进行清零初始化,那么一定要先对这个指针变量进行初始化,即一定要先让它指向某个有效的地址。而且用memset给指针变量如p所指向的内存单元进行初始化时,n 千万别写成 sizeof(p),这是新手经常会犯的错误。因为 p 是指针变量,不管 p 指向什么类型的变量,sizeof(p) 的值都是 。
# include <stdio.h>
# include <string.h>
int main(void)
{
int i; //循环变量
char str[];
char *p = str;
memset(str, , sizeof(str)); //只能写sizeof(str), 不能写sizeof(p)
for (i=; i<; ++i)
{
printf("%d\x20", str[i]);
}
printf("\n");
return ;
}
memset:char型初始化函数

头文件:<string.h> 或 <memory.h>

函数原型:void *memset(void *s , int ch , size_t n )

memset(结构体/数组名 , 用于替换的ASCII码对应字符 , 前n个字符 );

memset(结构体/数组名 , "用于替换的字符“ , 前n个字符 );

函数解释:将s中的前n个字节用ch替换并且返回s

函数作用:在一段内存块中填充某一个给定的值,常用于较大的对结构体和数组的清零操作。

最新文章

  1. (分享)Paxos在大型系统中常见的应用场景
  2. jQuery事件对象event的属性和方法
  3. 大话Git
  4. HDU 1062 Text Reverse(水题,字符串处理)
  5. css中的盒子模型
  6. Java数据结构之排序
  7. 谈谈java的BlockingQueue
  8. 【Codeforces 788C】The Great Mixing
  9. 【转】linux grep命令
  10. linux shell 执行远程命令
  11. Django通过pycharm创建后,如何登录admin后台?
  12. java截取2个指定字符之间的字符串
  13. SV中的随机化
  14. Shell脚本编写5-----Shell 基本运算符
  15. 20145226夏艺华 《Java程序设计》实验报告四
  16. JS中自定义事件的使用与触发
  17. 在Unity中实现屏幕空间反射Screen Space Reflection(3)
  18. x86架构下的控制寄存器CR0-CR4
  19. Java 进阶6 异常处理的陷阱
  20. BW数据加载

热门文章

  1. 一起学习epoll
  2. 使用adb命令控制anroid手机
  3. Django:前后端分离 djangorestframework开发API接口 serializer序列化认证组件
  4. java打包小记
  5. Apache软件基金会核心项目Tomcat的那些事
  6. Java基础笔试练习(十二)
  7. 你应该掌握linux中Bash命令的一些快捷方式
  8. 16.Python略有小成(内置模块Ⅱ)
  9. 神奇的print
  10. Nginx 添加模块