首页 > 编程知识 正文

memset 头文件,memset函数头文件

时间:2023-05-05 14:19:56 阅读:235020 作者:1798

memset使用方法及注意事项 一,memset(数组名,数据,sizeof(数组名))  是将数组内存中的所有元素设置为特定的值;   以int为例 若第二参数为0,数组全部元素改为0; 若第二参数大于0,数组全部元素改为正无穷(可以暂且理解成无穷); 若第二参数为-1,数组全部元素改为-1; 若第二参数小于-1,数组全部元素改为负无穷。 二,memset(数组名,数据,字节总数)  或 memset(数组名,数据,n*sizeof(数据类型))  可以指定覆盖数组中前n个元素的值 字节数代表着覆盖n个字符的总字节数, 字节数必须是以下各类型所占字节数的整倍数 。 char 1个字节 bool  1个字节 int 4个字节 long long  8个字节 double  8个字节
另:sizeof() 作用就是返回一个对象或者类型所占的内存字节数。 如: #include <iostream> #include <cstring> using   namespace  std ; int  main () { int  a [ 30 ]; memset ( a , 0 , sizeof ( a )); memset ( a ,- 1 , 12 ); for ( int  i = 0 ; i <= 25 ; i ++) cout << a [ i ]<< ' ' ; return   0 ; }
输出的则是前三个为-1,后23个是0的数列;
memset(a,-1,12)还可以写成memset(a,-1,3*sizeof(int))。   sizeof后如果是类型必须加括号,如果是变量名可以不加括号,这是因为sizeof是个操作符而不是函数。 三,常见错误 1.搞反数据和字节总数的位置 2.过度使用memset 如: #include <cstdio> #include <cstring> int  main ()   {   int  a [ 30 ];   memset ( a , 0 , 80 );   for ( int  i = 0 ; i < 20 ; i ++)   scanf ( "%d" ,& a [ i ]);   for ( int  i = 0 ; i < 20 ; i ++)   printf ( "%d " , a [ i ]);   return   0 ;   }
这里的memset是多余的. 因为这块内存马上就被全部覆盖,清零没有意义.

值得注意的一点: 在使用字符数组时,sizeof(char数组名)返回的是整个数组所占字节总数,而strlen(char数组名)返回的则是字符数组中‘/0’之前的元素所占字节总数。 例如, char ch [ 20 ]= "0123456789" ; int a = sizeof ( ch ), b = strlen ( ch ); //结果a=20而b=10

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。