#include<stdio.h>
void swap(void* p1, void* p2, int len);
int main()
{
/*
void 类型的指针
*/
//1. 定义两个变量
int a = 10;
short b = 20;
//2. 定义两个指针
int* p1 = &a;
short* p2 = &b;
//3.输出打印
printf("%d\n", *p1);
printf("%d\n", *p2);
/*
不同类型的指针之间,是不能互相赋值的
void类型的指针打破了上面的观念
void没有任何类型,好处可以接受任意类型指针记录的内存地址
*/
void* p3 = p1;
void* p4 = p2;
// 缺点: void类型的指针 无法获取变量里面的数据 也不能进行加减计算
//
int c = 100;
int d = 200;
swap(&c, &d, sizeof(int));
printf("c = %d,d = %d\n", c,d);
long long c1 = 100L;
long long d1 = 200L;
swap(&c1, &d1, sizeof(long long));
printf("c1 = %lld,d1 = %lld\n", c1, d1);
return 0;
}
// 用void指针 定义一个通用的交换数据的方法
void swap(void* p1,void* p2,int len)
{
// 把void类型的指针 转化成 char类型的指针
char* pc1 = p1;
char* pc2 = p2;
char temp = 0;
//以字节为单位 一字节一字节的进行交换
for (int i = 0; i < len; i++)
{
temp = *pc1;
*pc1 = *pc2;
*pc2 = temp;
pc1++;
pc2++;
}
}
c语言中的void指针
最新推荐文章于 2024-09-24 08:48:12 发布