1.
data |= (0x1 << 6)
data &= (~(0x1 << 6))
data ^= (0x1 << 6)
2.
(1) 5
(2) 6 10 5
5 errinfo3 值循环赋值了5次
3.
tempInfo1.height = 1;
tempInfo1.with = 2;
tempInfo2.baseInfo.height = 1;
tempInfo2.baseInfo.with = 2;
tempInfo3->height = 1;
tempInfo3->baseInfo->with = 2;
4. 9
5.
(1) A unsigned int *p = (int*)0x80000000; *p = tmp;
B tmp = *((int*)0x80000000);
(2) int *p = &buf[4];
*p = tmp;
(3)
6.
(1) seqn[tail] = data;
tail = (tail + 1)%SEQLEN;
(2) data = seqn[head];
head = (head + 1)%SEQLEN;
(3) head ==1;
(4) head == (tail+1)%SEQLEN
(5) tail = head = 0;
(6) (tail - head + SEQLEN)%SEQLEN
(7) SEQLEN - 1;
7.
(1) Rdy[ i/8 ] |= (0x1 << (i % 8));
(2) Rdy[ j/8 ] &= (~(0x1 << (j % 8)));
(3)
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
if((Rdy[i] & (0x1 << j)) == 1)
return i*j;
}
}
8.
i 不确定大小,大于100会发生越界访问,在函数内判断一下 i 的大小即可
9.
函数将 char*类型传参为int*类型可能会非法访问内存
10.
(1) line5 为str 赋值时会越界,str值申请了10个字节,需要12个字节
(2) p = (char*) malloc (20);