关于memset()

简介:

关于memset()

用memset()将一个数组初始化为0,其中0的功能与向数组填入NULL或'\0'是不是一样的?
数组是不是必须初始化?
回答:
如果以这样的方式声明数组
int a[256]={0};
则数组内全部数字自动初始化为0,即一开始数组内所有元素的值为0

如果这样声明
int a[256];
则数组没有初始化,则开始时数组内的数字可以是任意值。

注意不是楼上所说,memset是对每个字节赋值,而int有4字节(32位)
比如这样,memset(a,1,sizeof(a));
则a中的每个元素都被赋值成为2进制数为,00000001000000010000000100000001,的数
转换成10进制就是16843009
所以,一般用memset对数组赋0或-1,赋其他的值就要用循环来实现。

关于NULL,\0:
stdio.h中有这句:
#define NULL 0
NULL在编译时都转换为0了;
\0是ascll码中编号为0的那个字符,也就是(int)(\0)==0;
相关文章
|
5月前
|
C语言
sizeof
【6月更文挑战第17天】
63 1
|
6月前
|
存储 C语言
关于sizeof介绍与分享给大家介绍
关于sizeof介绍与分享给大家介绍
sizeof和strlen的对比
sizeof和strlen的对比
51 0
|
编译器 C++
memset的坑
memset 作为对内存初始化的函数,还是有不少坑和误区的,今天就来对这个函数作一个总结。
116 0
|
存储 编译器 C++
C++ sizeof 的介绍
C++ sizeof 的介绍
113 0
sizeof与strlen练习
sizeof与strlen练习
51 0
|
C++
关于sizeof相关注意点
strlen是专门用来求字符串长度的,统计的是’\0’之前出现的字符个数,一定要找到’\0’才能结束,所以如果没有\0可能会存在越界访问问题
100 0
|
存储
memset,calloc的区别
memset,calloc的区别
104 0
memset,calloc的区别