C语言中关于viod函数的问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 23:18:12
函数如下:
void inv(a,n)
char a[];
int n;
{int i,j;
char ch;
for(i=0,j=n-1;i<j;i++,j--)
{ch=a[i];a[i]=a[j];a[j]=ch;
}
}
main()
{int n;
char a[60];
gets(a);
n=strlen(a);
inv(a,n);
printf("%s\n",a);
}
目的是输入字符串,反置输出
但为什么删除viod函数,也可以达到上述目的,viod函数用来做什么?无返回值到底什么意思?
但形参中进行数组交换后的值得返回到主函数中吧,这和无返回值有什么关系吗?

void就是表示函数没有返回值,没有返回值就是执行完函数后不给调用处一个值
比如你用到的函数n=strlen(a);
是计算字符串长度的,那么在strlen函数中进行的是长度的计算,然后把计算出的值返回给调用出的n,如果在定义strlen加上了void,那么照样执行计算的操作,不过就取不到计算出来的值了,明白了不?

关于你的补充问题,我做补充回答
你说得实际上是对地址进行的操作,与返回值无关
上面程序中修改数组内的值不是通过返回值操作的,是通过修改数组地址操作的,换句话说,被调函数中的数组a和主函数中的数组a是同一个数组,数组的传递是址传递,变量的传递是值传递

void就是不通过函数名返回值,不加的话默认为void类型
有返回值就是函数执行完后代表一个值,值由函数内return语句得到
无返回值就是函数执行完函数名不代表任何值