memset()一般是对字符型数组赋初值,如果非要对整型数组赋初值,只能赋值0.

2020年8月8日 109点热度 0条评论 来源: Ocean

摘要

memset()一般是对字符型数组赋初值,如果非要对整型数组赋初值,只能赋值0.
原因是memset()是设置每一个“字节”的值。

问题

用memset将二维整型数组全部设置为最大整型时遇到的问题及解决办法

#define MAX 100000
const int MAXN = 5; 
int len[MAXN][MAXN]; 
memset(len,MAX,sizeof(len));//失败,并不能让len数组所有的值是100000,而是-1600085856
memset(len,-1,sizeof(len))//成功,并且len所有的值都是-1;
memset(len,-2,sizeof(len))//失败 

解释

sizeof(len) = 100
sizeof(len) != 25
memset是按字节赋值的。
memset是内存操作,作用是设置每一个“字节”的值。第一个参数是内存地址,第2个参数是设置的值(0x00 - 0xff),第3个参数是字节数。

除了将整型数组设置为0,否则用memset对非字符型数组赋初值是不可取的!

使用memset将二维数组全部设置为一个值

char array[][];
memset(array,'A',sizeof(array));

    原文作者:Ocean
    原文地址: https://segmentfault.com/a/1190000004104888
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。