两道C语言小题

来源:百度知道 编辑:UC知道 时间:2024/05/21 20:15:00
1. 若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是
A) p=2*(int*)malloc(sizeof(int));
B) p=(int*)malloc(2*sizeof(int));
C) p=(int*)malloc(2*2);
D) p=(int*)calloc(2,sizeof(int));
答案A
这个题的选项都是什么意思呀?
2. 以下程序的输出结果是
main()
{ char x=040;
printf("%0\n",x<<1);
}
A) 100 B) 80 C) 64 D) 32
答案C
麻烦讲下这个题怎么做呀?

1.
A) p=2*(int*)malloc(sizeof(int));指针乘法,一般认为没有意义
B) p=(int*)malloc(2*sizeof(int));一般写法,分配两个int
C) p=(int*)malloc(2*2);有些时候同B,但硬件依赖太强
D) p=(int*)calloc(2,sizeof(int));功能同B
2.
x<<1左移1位,不溢出相当于*2

(int*)malloc(sizeof(int));这是一个动态存储单元,如果2个就2*,我也是第一次见,很少用吧,一般直接用B的方法,一个存储2个整数的单元;
2、040是八进制数,等于32,x<<1左移一位编程64,所以是C