该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
做了几道题目,对以下几道有些疑问,请教高手:
若有以下定义和语句:
char **s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果是()
答案是4
我用vc6.0写了以下程序:
#include
#include
void main()
{
char **s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
}
编译之后出现如下警告
warning C4047: 'initializing' : 'char ** ' differs in levels of indirection from 'char [6]'
warning C4047: 'function' : 'char *' differs in levels of indirection from 'char ** '
warning C4024: 'strcpy' : different types for formal and actual parameter 1
一运行就提示该进程出错,需要关闭
我想问char **s1="12345"这句话对吗?可以把字符数组赋给二级指针吗?如果对的话,strcpy(s1,s2)对不对?,这道题目是不是错了?
在下列叙述中,错误的一条是()(本题分值:2分)
A.scanf()函数可以用来输入任何类型的多个数据
B.数组名作函数参数时,也采用“值传送”方式
C.如果形参发生改变,不会改变主调函数的实参值
D.函数的实参与形参的类型应一致
答案是D,
但是我觉得D是对的,而B和C是错的,B错是因为数组名作函数参数时,是把数组的首地址传递给形参。C错是因为如果数组作为参数的话,形参和实参就能相互影响了,是这样的吗
以下对C语言函数的有关描述中,正确的是()
A.在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.C程序中有调用关系的所有函数必须放在同一个源程序文件中
答案是A
但是我觉的A也是错的,因为如果数组作为参数的话,形参和实参就能相互影响了,是这样的吗