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不是指针吗?
请求大神的解释。
谢谢!!! 展开
问题:
首先确认一下,s[] =“ABC”,中的s即是数组又是指针吧?
上面的print_reverse()函数传递的指针的时候,写成print_reverse(char *s)或者print_reverse(char s[])都可以,为什么写成print_reverse(s)就不行呢???难道s不是指针吗?
请求大神的解释。
谢谢!!! 展开
展开全部
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]);
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]);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询