void函数如何调用,void方法怎么断言( 二 )


c++ 函数调用 自定义函数void 这个程序的功能是为了说明形参和实参的区别~~~

swap()函数里的形参是x y 函数体内是x 和y 的交换

而当在主函数里要调用swap()时 会进行实参对形参的赋值

也就是x=a;y=b

然后里面在进行交换 但交换的仍然是x 和y 对a b并没有影响所以你会看到输出的结果中a 和b并没有交换 这就是void函数的特点 函数之进行操作而不返回值
如果不是void类型的函数 那形参的操作后会得到一个结果比如数值而这个数值与你想通过实参来操作的结果是一样的 比如你如果要求a和b的和sum(5,3)那函数中还是形参在进行计算而形参的值分别被赋了 5 和3 所以结果也是8 与你想要的正好相同

如果你要这个swap对实参也能进行真正的交换 那需要用引用调用或者指针调用

例如将swap()定义为:swap(int &a, int&b) swap(int * a , int * b)
c语言 void函数怎么调用 int(*)(int)表示一个函数指针, 它指向一个拥有一个int参数的、返回值为int型的函数 。
void*指针可以强制转换成其他任何指针 。
void函数怎么用 void+函数的使用方法:
1.void *可以指向任何类型的数据
2. void真正发挥的作用在于:
(1) 对函数返回的限定;
(2) 对函数参数的限定 。
例如:
void *p1;
int *p2;
p1 = p2;
3.void的使用:
规则一
如果函数没有返回值, 那么应声明为void类型 。
规则二
如果函数无参数,那么应声明其参数为void 。
规则三
小心使用void指针类型 。
按照ANSI(American National Standards Institute)标准, 不能对void指针进行算法操作, 即下列操作都是不合法的:
void * pvoid;
pvoid++; //ANSI:错误
pvoid += 1; //ANSI:错误
//ANSI标准之所以这样认定, 是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的 。
//例如:
int *pint;
pint++; //ANSI:正确
pint++的结果是使其增大sizeof(int) 。 ( 在VC6.0上测试是sizeof(int)的倍数)
但GNU(GNU's Not Unix的缩写)则不这么认定, 它指定void *的算法操作与char *一致 。
因此下列语句在GNU编译器中皆正确:
pvoid++; //GNU:正确
pvoid += 1; //GNU:正确
pvoid++的执行结果是其增大了1 。 ( 在VC6.0上测试是sizeof(int)的倍数)
在实际的程序设计中, 为迎合ANSI标准, 并提高程序的可移植性, 可以这样编写实现同样功能的代码:
void * pvoid;
(char *)pvoid++; //ANSI:正确;GNU:正确
(char *)pvoid += 1; //ANSI:错误;GNU:正确
GNU和ANSI还有一些区别, 总体而言, GNU较ANSI更“开放”, 提供了对更多语法的支持 。 但是我们在真实设计时, 还是应该尽可能地迎合ANSI标准 。
规则四
如果函数的参数可以是任意类型指针, 那么应声明其参数为void *
典型的如内存操作函数memcpy和memset的函数原型分别为:
void * memcpy(void *dest, const void *src, size_t len);

void * memset ( void * buffer, int c, size_t num );
规则五
void不能代表一个真实的变量
下面代码都企图让void代表一个真实的变量, 因此都是错误的代码:
void a; //错误
function(void a); //错误
void 类型的函数怎么调用呢? main函数中void equation(double a,double b,double c);改为
equation(a,b,c); // 函数调用
void equation(double a,double b,double c);是声明
将void equation(double a,double b,double c);改为void equation(int a,int b,int c);

推荐阅读