c语言错误c4047,请教几个c语言的基础问题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

做了几道题目,对以下几道有些疑问,请教高手:

若有以下定义和语句:

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也是错的,因为如果数组作为参数的话,形参和实参就能相互影响了,是这样的吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值