单项选择题

以下程序段有错,错误原因是______。
main()
int *p,i;char *q,ch;
p=&i;q=&ch;*p=40;*p=*q;

A.p和q的类型不一致,不能执行*p=*q;语句
B.*p中存放的是地址值,因此不能执行*p=40;语句
C.q没有指向具体的存储单元,所以*q没有实际意义
D.q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句