您的位置:首页 > 其它

利用memset实现(除-1、0)数组的初始化的问题

2013-12-10 20:52 274 查看
        今天在调试程序的过程中,需要对一个数组进行初始化操作,而初始化的值并不是0(00000000)和-1(11111111)。平时,我们想对指针和数组进行初始化,首先想到的就是使用memset。今天我也不例外,使用memset进行初始化,发现打印出来的结果并不是我们初始化的值。

        在网上查询了一下,才知道memset是按字节进行填充的,只能一个一个的字节进行赋值;而int型是占4个字节的,所以使用memset进行赋值时,会将int型的4个字节赋值成0x01010101,因此打印出来的结果就是一大串数字(十进制的数字)。

        下面来看一下实际中用到的代码:

int array[5];
memset(array, 1, sizeof(int) * 5);
printf("array[0]: %d", array[0]);


        打印结果为: array[0]: 16843009   (0x01010101)

        要想正确的赋值一个数组(非0和-1),最好是使用for循环进行初始化:

int d[5];
for (i=0; i<5; i++)
{
d[i]=1;
}

         
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  memset int C 数组初始化
相关文章推荐