求C语言问题
1个回答
展开全部
1.无正确答案,可能把逗号打成分号了
main(int
argc,char
*argv[]
);
2.选C
3.选B
4.选B
5.选D
6.暂不讨论,后面给出
7.选D
8.选C
9.选C
10.选B
下面给出几个有异议的题目的分析
6.题目分析如下:
int
*p1,*p2,m=5,n;
A、p1=&m;p2=&p1;//p1本身就是个指针,&p1则是取这个指针的地址
实际上,p1是int*类型的,而&p1是int**类型的,至于这个,你看看指向指针的指针就明白了
也就是说,这条赋值语句是将int**类型的值赋给int*类型,而编译器不能执行这种转换,所以错误
B.p1=&m;p2=&n;*p1=*p2;
//这个会涉及到你的n是在主函数里还是在主函数外定义的,如果在主函数外定义,也就是说它具有全局作用域,则n是被默认初始化为0,那么,两个指针p1和p2都进行了初始化,就是正确的,而如果n是在主函数内定义的,那么n是未被初始化的,那么你引用n(即*p2)则引用的是一块不确定的内存空间,这个是运行时错误.这里,p2是未被初始化的,它是个悬挂指针或者说是野指针
C.p1=&m;p2=p1;
//这个没啥说的.p1和p2都初始化为指向同一个变量m的指针,所以正确
D.p1=&m;*p2=*p1;
//p2是未被初始化的,也就是说,它是悬挂指针或野指针,你用*p2引用的将是一块不确定的内存空间,你通过赋值语句,将会改写你的*p2所引用的这块内存空间所存放的内容,如果这块内存空间恰好是某个其他应用程序的,那么你改写了它的内容,可能会导致这个应用程序不能正常运行.
10.题目也有异议,分析一下
楼上有个选A的,我来说下为什么你的错了
就一句话,你没考虑指针的移动,即这条语句,可能被你无意忽视了
p+=3;
PS;至于其他的,就没啥好说的了
main(int
argc,char
*argv[]
);
2.选C
3.选B
4.选B
5.选D
6.暂不讨论,后面给出
7.选D
8.选C
9.选C
10.选B
下面给出几个有异议的题目的分析
6.题目分析如下:
int
*p1,*p2,m=5,n;
A、p1=&m;p2=&p1;//p1本身就是个指针,&p1则是取这个指针的地址
实际上,p1是int*类型的,而&p1是int**类型的,至于这个,你看看指向指针的指针就明白了
也就是说,这条赋值语句是将int**类型的值赋给int*类型,而编译器不能执行这种转换,所以错误
B.p1=&m;p2=&n;*p1=*p2;
//这个会涉及到你的n是在主函数里还是在主函数外定义的,如果在主函数外定义,也就是说它具有全局作用域,则n是被默认初始化为0,那么,两个指针p1和p2都进行了初始化,就是正确的,而如果n是在主函数内定义的,那么n是未被初始化的,那么你引用n(即*p2)则引用的是一块不确定的内存空间,这个是运行时错误.这里,p2是未被初始化的,它是个悬挂指针或者说是野指针
C.p1=&m;p2=p1;
//这个没啥说的.p1和p2都初始化为指向同一个变量m的指针,所以正确
D.p1=&m;*p2=*p1;
//p2是未被初始化的,也就是说,它是悬挂指针或野指针,你用*p2引用的将是一块不确定的内存空间,你通过赋值语句,将会改写你的*p2所引用的这块内存空间所存放的内容,如果这块内存空间恰好是某个其他应用程序的,那么你改写了它的内容,可能会导致这个应用程序不能正常运行.
10.题目也有异议,分析一下
楼上有个选A的,我来说下为什么你的错了
就一句话,你没考虑指针的移动,即这条语句,可能被你无意忽视了
p+=3;
PS;至于其他的,就没啥好说的了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询