库函数memset()是针对字节操作的,其中第二个参数值被赋给第一个参数指向的内存地址开始的每一个字节,因此,这种初始化其实存在局限性,也导致其主要用于清除数组内容等。比如:假设i=0,1,2,...
memset(a,0,sizeof(a)); // 此时a[i]=0x00000000
memset(a,-1,sizeof(a)); // 此时a[i]=0xffffffff
memset(a,0x0f,sizeof(a)); // 此时a[i]=0x0f0f0f0f=252645135
由于500=0x1f4,400=0x190,因此,如果使用
memset(a,0x190,sizeof(a)); // 此时a[i]=0x90909090
所以,初始化过程还是建议使用循环语句来做。
下面再看一个例子:
例2: int num[8]; 我们用memset给str初始化为{1,1,1,1,1,1,1,1}, memset(num,1,8);//这样是不对的 一个int是4个字节的,8个int是32个字节,所以首先要赋值的长度就不应该为8而是32。
本文深入探讨了C语言中memset()函数的使用方法及其局限性,通过实例解释了如何正确地利用此函数初始化数组,并指出了在不同数据类型下初始化时需要注意的问题。
5184

被折叠的 条评论
为什么被折叠?



