重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
p函数就是个冒泡递减排序功能。标准函数头写法应该是void p(int a[])而不是void p(int a[5]),即使写成void p(int a[5]),编译器也是按void p(int a[])解释而不按void p(int a[5])解释,而且这里a[]的意思就是定义a是int *型指针。函数p中并没有改变a,改变的是a指向的目标a[0]~a[4]。所以不知你问的具体是啥意思……
成都网站建设哪家好,找创新互联建站!专注于网页设计、成都网站建设、微信开发、微信小程序、集团成都企业网站建设等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:高空作业车租赁等众多领域,积累了大量丰富的经验,同时也获得了客户的一致称赞!
先举个简单例子:
#include iostream
using namespace std;
void Add1(int *a)
{
(*a)++;
}
void Add2(int a)
{
a++;
}
int main()
{
int x=1,y=5;
Add1(x);
Add2(y);
coutx" "yendl;
return 0;
}
输出:
2 5
这两个自加函数中,Add1是指针传递,Add2是数值传递,
在调用Add2(y)时,系统是先建造一个int型变量a,再将y的值传给a(此时y和a是两个不同地址的变量,只是两者值相同),然后a++,却对y没有任何操作,故在函数调用结束后,释放a,而y没任何变化;
在调用Add1(x)时,系统先建造int型指针a,然后将实参x的地址传给了指针a,故此时a与x是指向同一地址,即共享统一数据,当对地址a内的数据进行操作,就是对x进行操作。a++时自然也对x++,当函数调用结束,指针a释放掉,x的值此时已经发生了变化。
这就是两者不同,地址传递的参数都是指针类型,于数值传递不一样。
至于选择那种传递,就要看这个程序的具体目的和功能了,一般要对参数进行修改的要用地址传递,而只是调用参数的数据进行其他计算并不需要修改数据本身宜用数值传递。
还有什么不明白吗
void是是C语言的一个关键字,其含义为空。在C语言中,单独的void有两种用途,均用于函数中。 1 用于函数返回值。形式为 void func_name(...); 代表函数没有返回值。在这样的函数中,调用return语句时,不需要也不可以有参数。注意,写成 func_nmae(...); 的形式,在部分编译器中可以编译成功,但并不是没有返回值,而是有一个默认的整型(int)返回值的意思。 2 用于函数参数列表。当函数没有参数时,需要定义为 xxx func_name(void); 的形式,表示本函数不需要任何参数。注意,如果写成 xxx func_name(); 的形式,与void不同,不是没有参数,而是函数参数不定,可以接收任何长度的参数。
void 代表空返回值。即无返回值
所给的案例中,swap函数是一个无返回值函数
但是该函数带两个输入参数
当主函数调用该函数时
只需要给定两个输入参数即可
该函数执行完毕后,无返回值
接下来继续往下执行,执行printf语句。