C语言选择题
答案:C
解析:
这道题主要考两个概念:
1. 进入fun函数的参数p实际上是main中的变量p的拷贝,所以对fun里的绝简御p赋值将不会影响到main函数中的变量p;
2. fun函数中的变量s是临时变量,是在栈上开辟的s空间,当fun函数返回时,内存就会被并岩释放掉。
对于每个选项的情况如下:
A: 不符合1,2
B: 不符合1
C: 完全符合,因为采用的是二级指针,而且是使用malloc在堆上开辟的空间,不会想临时变量s一样(当fun函数返回时被自动清理掉)
D: 不符合2
==================
补充:
对于上面的兄弟ph12 说的C中申请的空咐碰间不够,实际上是无碍的。
1. 有可能这个题是运行在16位机器上的,这样sizeof(int)就等于2;
2. 另,即使是运行在32位,或者更高的64位上。也不管是用的大端存储,还是小端存储,数字4都要小于0XFF,所以一定会在较低的16位上存储的,也就是malloc(2)空间上,所以上面的分析仍然成立。
几道C语言选择题,要详细过程,本人基础不好,额外加点儿进制解说,谢谢
1.B
因为以0开头的数是八进制数,而八进制数的数字是0~7,没有埋禅绝8的
C是科学计数法,是可以作为常量的,所以也是正确的
2.B
因为按%d输出,即十进制输出,所以要转换成弯姿十进制
x是八进制的23,转换成十进制为2*8+3=19,因为是前置运算符–,先做-1运算再输袭弊出,所以为18
3.B
i同上,前置++为先+1再输出,y为后置–,先输出再做-1运算,所以输出10,y的值最后为9
C语言选择题解释 急 95
B.Penghua 20045 537
调用函数f(s)时,p本来指向主函数中的s[0],也就是{“YangSan”,20041,703},然后++p,p后移1位,即s[1],{“LiSiGuo”,20042,580};
q本来指向f()函数中的s[0],{“SunDan”,20044,550}.++q,又后移1位,成了{“Penghua”,20045,537}。
最后*p=*q把两者调换模型,那主函数带轮中s[1]就蠢码信成了{“Penghua”,20045,537}。故输出s[1]为B
c语言 选择题 一道。求答案。求解释。
我记得c语言默认的返回值是int类型的,不过新版本好像不怎么支持默认的返回类型啊。