C语言大神!请教一个关于C语言指针传参的问题。

上面是一段,倒着显示一段字符串的程序。问题:首先确认一下,s[]=“ABC”,中的s即是数组又是指针吧?上面的print_reverse()函数传递的指针的时候,写成pr... 上面是一段,倒着显示一段字符串的程序。
问题:
首先确认一下,s[] =“ABC”,中的s即是数组又是指针吧?
上面的print_reverse()函数传递的指针的时候,写成print_reverse(char *s)或者print_reverse(char s[])都可以,为什么写成print_reverse(s)就不行呢???难道s不是指针吗?
请求大神的解释。
谢谢!!!
展开
 我来答
jzchenr
推荐于2017-09-12 · TA获得超过1062个赞
知道小有建树答主
回答量:851
采纳率:66%
帮助的人:234万
展开全部
s是数组名,指向数组的首地址,相当于指针的功能,可以类似于指针的操作,但是不是指针.比如您不能对其赋值。
void print_reverse(char *s)
void print_reverse(char s[])这两个是函数名,你把他们改成void print_reverse(char *b)都可以,对函数而言,其中的形参,必须要有类型哦,所以 void print_reverse(s)这样的话,编译器s是没类型的。 但是你可以这样调用,是没问题的哈。如果定义为:print_reverse(char *s)你可以这样调用,print_reverse(s);print_reverse(&s[0]);
铁打的泥人
2014-07-19 · TA获得超过2067个赞
知道小有建树答主
回答量:741
采纳率:50%
帮助的人:357万
展开全部
全局变量在定义函数的参数里面无效
另外,函数定义形参必须是这么定义,不需要[类型][变量]
函数形参在地址分配里也是重新分配地址的,所以你定义的这个s是一个全新的数组,和上面的全局变量没有关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式