某程序使用memset初始化二维数组int arr[10][20]。若要将所有元素设为1,下列哪项能正确实现? A. memset(arr, 1, sizeof(arr)) B. memset(arr[0], 1, 10*20*sizeof(int)) C. memset(&arr[0][0], 1, sizeof(arr)) D. 以上均不正确

答案解析

核心考点:memset函数对整型数组的初始化原理。 解题思路: 1. memset按字节赋值,int类型占4字节,设为1会导致每个int变为0x01010101(十进制16843009)。 2. 任何直接使用memset赋值非0值给整型数组的操作均无法得到预期结果。 选项分析: - A错误:语法正确但语义错误,全部元素将被设为错误值。 - B错误:同A,仅地址表示方式不同。 - C错误:地址计算正确但赋值原理错误。 - D正确:所有选项均无法正确初始化int数组为1。 易错点:容易误选B或C,认为地址计算正确即可,忽视memset的底层字节操作特性。
正确答案:D
随机推荐
开始刷题