具体memset用法网络资源有很多,以下介绍个人心得。
===================================================================
memset 用法
(第三个参数为字节数)
1,对于字符数组
char a[10];
memset(a,'A',sizeof(a));
2,对于整形数组
int a[10];
memset(a,0,sizeof(int)*10);
整形数组也只能填充0和-1,而double类型则只能填充0.根据二进制存储double类型原理
若使用
memset(a,0,sizeof(a));
在vs2005内可安全执行,但到了OJ上会出现runtime error报错
//保留最终解释权;
若使用
memset(a,0,10);
则数组乱码,因为int需要4个字节数表示一个十进制。这里仅表示了2个半数
====================================================================
比较sizeof(int)与sizeof(a)关系
sizeof(int)为获取类型字节数,如果操作系统为32位,则结果为4;
而sizeof(a)则是获取a的 字节数;
====================================================================
sizeof()对结构体与类取字节操作:
struct def
{
int data;
double data1;
char data2;
};
字节总数为:int m=4+4+8+1=17,17>sizeof(double),添加至sizeof(double)的倍数
因为根据vc的对齐法则得int 之后为double ,增加总数至8,进行相加。
由于m>sizeof(double),使mz增加至sizeof(double)的倍数。
这个的sizeof(double)为结构体内字节数最多类型。
===========================================================================
今天做了道简单的DP水题后,发现对memset以及sizeof()都不甚了解。补充基础。
===========================================================================
===========================================================================
自从写了高校杯的文档后,发现自己要加强这方面的专业水准,为了日后的发展~~