C语言中的实参形式??

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:45:36
#include<stdio.h>
#include<string.h>
#define N 80
void fun1(char *w)
{
int i;char t;
t=w[0];
for(i=0;i<strlen(w)-1;i++)
w[i]=w[i+1];
w[strlen(w)-1]=t;
}
void fun(char *w,int m)
{
int i;
for(i=0;i<m;i++) fun1(w);//fun1(char *w);

}
main()
{
char a[N]="ABCDEFGHIJK";
int m;
printf("the oringinal string:\n");puts(a);
printf("\n\nEnter m:");
scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");puts(a);
printf("\n\n");
}

为什么把fun函数中调用fun1函数的参数形式改成fun1(char *w)就不对了啊??
。。请详细。。谢了

函数调用和声明是不同的,声明的时候要详细的写明形参和数据类型,而实参是不同的,你穿过去的就是实参,他是不能带数据类型说明符了,实参的类型其实在声明的时候就定下来了(强制类型转换除外)

fun1(w);//fun1(char *w);
实际参数 w 本身就已经声明了为char *类型,在实际的函数调用时,从语法上不允许用fun1(char *w); 只能直接把实际的量 w 作为参数,提供给函数,调用函数:fun1(w);

因为fun1()函数中的形参就是(char *w)
fun1(w);//fun1(char *w); 此乃实参~\
想当于叠加了吧~