用void 指针实现类似模板的SWAP函数

#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
void swapTest(void *swapA,void *swapB,int size)
{
char *buff=(char *)malloc(size);
memcpy(buff,swapA,size);
memcpy(swapA,swapB,size);
memcpy(swapB,buff,size);
}
int main()
{
double x=0.123;
double y=0.456;
cout<<"x="<<x<<","<<"y="<<y<<endl;
swapTest((void *)&x,(void *)&y,sizeof(double));
cout<<"after swap"<<endl;
cout<<"x="<<x<<","<<"y="<<y<<endl;
cout<<"this is test"<<endl;

}

上述变量x,y可以定义为char,int ,float,double

时间: 2024-11-10 05:41:10

用void 指针实现类似模板的SWAP函数的相关文章

void指针

1回顶部 热门文章:C++中extern “C”含义深层探索 编程实现盗2005版QQ源码 1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试

C++ Primer 学习笔记与思考_7 void和void*指针的使用方法

(一)void的含义 void的字面意思是"无类型",void差点儿仅仅有"凝视"和限制程序的作用,由于从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错.提示"illegal use of type 'void'".只是.即使void a的编译不会出错.它也没有不论什么实际意义. void真正发挥的作用在于: (1) 对函数返回的限定: (2) 对函数參数的限定. int f(void); equal t

void* 指针有什么用

void*其实可以理解为一个context,利用它可以很好的实现C语言面向对象编程.我觉得使用void*,不是为了看起来合适,而是一个约定,使用C/C++编程的人员看到void*,习惯性的就会认为--这是个私有数据,只有定义的一方才有权解释:这也是我们在回调函数中传递void*作为userdata的基础共识. void*指针其实可以用作泛型,你想象一下你在C中要交换两个变量,如果是两个整数的话,就像: void swap_int(int* lhs, int* rhs) { int tmp = *

C语言学习之空指针NULL以及void指针详解

本文和大家分享的主要是c 语言 空指针NULL 以及 void 指针相关内容,一起来看看吧,希望对大家 学习c语言有所帮助. 空指针 NULL 一个指针变量可以指向计算机中的任何一块内存,不管该内存有没有被分配,也不管该内存有没有使用权限,只要把地址给它,它就可以指向,C 语言没有一种机制来保证指向的内存的正确性,程序员必须自己提高警惕. 很多初学者会在无意间对没有初始化的指针进行操作,这是非常危险的,请看下面的例子: 1. #include 2. int main () { 3. char *

黑马程序员-利用swap函数研究C的指针

设计3个函数,分别实现已下功能: 交换两个整数 交换两个整形指针 交换任意两个同类型的变量 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 void swap_int(int* pa, int* qa) //交换两个整数 5 { 6 int temp = *pa; 7 *pa = *qa; 8 *qa = temp; 9 } 10 11 12 void swap_intpur(int*

C++ Primer 学习笔记与思考_7 void和void*指针的用法

(一)void的含义 void的字面意思是"无类型",void几乎只有"注释"和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示"illegal use of type 'void'".不过,即使void a的编译不会出错,它也没有任何实际意义. void真正发挥的作用在于: (1) 对函数返回的限定: (2) 对函数参数的限定. int f(void); equal to in

C语言使用 void 指针实现Stack

数据结构基础课的教材使用C来实现数据结构,上学期看别的书用C++实现时还没什么感觉,一对比就发现C++的类和模板用起来比C方便多了. 在写四则运算计算器的时候,int写一遍,char还得写一遍感觉十分痛苦,百度了一下有没有别的解决办法,发现了下面这篇文章. 如何利用堆栈及逆波兰表达式进行数学四则运算:http://www.xuebuyuan.com/1602553.html 关键是在于理解 void 指针与一般指针的不同之处是它只保存数据的首地址,而不知道也不关心数据究竟有多少个字节. 因此利用

swap函数交换 指针

#include<stdio.h> #include<stdlib.h> void swap(int *p,int *q)//建立swap函数,定义两个指针,并把两个指针的地址交换 { int x=*p; *p=*q; *q=x; return; } main() { int m,n;//定义两个变量 printf("请输入两个数,m,n\n");//输入两个数 scanf("%d,%d",&m,&n); swap(&

void及void指针类型

1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of ty