当前位置: 首页 > wzjs >正文

做国学类网站合法吗wordpress论坛建设

做国学类网站合法吗,wordpress论坛建设,15个常见关键词,企业运营管理论文讲解 C语言 void* 指针类型之前,先来看下面程序中的 swap() 函数,为了实现交换两个 int 类型的变量,必须向 swap() 函数中传入指向这两个 int 类型变量的指针: void swap(int *x, int *y) {int temp *x;*x *y;*y temp; } 但是…

讲解 C语言 void* 指针类型之前,先来看下面程序中的 swap() 函数,为了实现交换两个 int 类型的变量,必须向 swap() 函数中传入指向这两个 int 类型变量的指针:

void swap(int *x, int *y)
{int temp = *x;*x = *y;*y = temp;
}

但是,参数类型指定为 int*,使得函数 swap() 只能交换 int 类型的变量。如果我们想让 swap() 更加通用,能够交换不同类型的变量,那么该怎么办呢?

为了使 swap() 函数更加通用,我们可以使用 void* 指针。void* 指针是一种通用指针类型,可以指向任何类型的数据。

修改后的 swap() 函数如下:

void swap(void *x, void *y, int size)

上述代码中的参数 x 和 y 都是 void* 指针类型。

void* 指针是一种特殊的指针类型,可以指向任何数据类型的对象。与其他类型的指针不同,void* 指针不能直接对其指向的对象进行操作,因为编译器无法确定其指向的数据类型及其大小。

例如:

int n;
void *p = &n;  //  int *赋值给void *,仅保存首地址,丢失了数据类型
*p;            //  错误,无法确定数据类型和大小,因此无法取值
p + 1;         //  错误,无法确定数据类型和大小,因此无法进行加减运算

同时,上面的代码还增加了一个参数 size,这个参数表示要交换的内存块的大小,单位是字节。例如:如果需要交换 char 类型的数据,那么将 size 参数传递给 sizeof(char),也就是 1 字节;如果需要交换 double 类型的数据,那么将 size 参数传递给 sizeof(double),也就是 8 字节。

根据上述的内容,我们可以对 swap() 函数进行修改,使其能够交换不同类型的变量,代码如下:

/**
*  快速入门C语言 https://xiecoding.cn/c/
**/
#include <stdio.h>
void swap(void* x, void* y, int size)
{// 将指针转换为char *,单个字节操作内存char* pX = (char*)x;char* pY = (char*)y;char temp;for (int i = 0; i < size; i++){temp = pX[i];pX[i] = pY[i];pY[i] = temp;}
}
int main()
{double a = 3.0, b = 5.0;printf("a=%f b=%f\n", a, b);// 交换变量 a 和 bswap(&a, &b, sizeof(double));printf("a=%f b=%f\n", a, b);return 0;
}

运行结果为:

a=3.000000 b=5.000000
a=5.000000 b=3.000000

首先,swap() 函数将两个 void* 类型的指针 x 和 y 转换为 char*  类型的指针 pX 和 pY。这样做的原因是,char 类型的大小为 1 字节,这允许我们在后面的循环中逐字节地操作内存。

然后,我们定义了一个 char 类型的变量 temp,用于在交换过程中存储临时数据。

接着,我们使用一个 for 循环,从 0 到 size - 1,循环地交换两个内存块中的内容。循环的每次迭代都会执行以下操作:

  • 将 pX 指针指向的内存块中的第 i 个字节保存到 temp 中;
  • 将 pY 指针指向的内存块中的第 i 个字节复制到 pX 指向的内存块的第 i 个字节;
  • 将 temp 中的值复制到 pY 指向的内存块的第 i 个字节。

这样,在循环结束后,两个内存块中的内容就被完全交换了。只要提供了正确的内存块大小,这个函数就可以用于交换任意类型的数据。

需要注意的是,在使用 swap() 函数时,需要保证传入的内存块大小和实际数据类型的大小一致,否则可能会导致数据出错。

http://www.dtcms.com/wzjs/823042.html

相关文章:

  • 手机商城网站建设企业电子商务网站建设总结
  • 在线做效果图的网站有哪些和平天津网站建设
  • 有源码个人网站怎么建立新闻媒体发布平台
  • 多国语言 网站源码免费个人网站空间注册
  • 龙岩市城乡建设局网站进不去山西建设厅网站首页
  • 请问哪个网站可以做当地向导平台公司331名单
  • 阿里云如何查看已建设好的网站江苏省宿迁市建设局网站
  • xss网站怎么搭建wordpress好还是帝国cms
  • 如何做购物网站网站域名到期后果
  • 花果园网站建设建设企业网站的好处是什么
  • 学习电商运营去哪里学国外seo查询
  • 金昌网站seo青岛平面设计公司
  • 中国网站建设公司排名东莞做企业宣传网站
  • 松江网站制作北京做网站费用
  • 做网站还要什么认证吗深圳市建网站公
  • 北京建设工程交易网站官网求个网站急急急
  • 烟台网站排名优化公司网站打不开dns修改
  • 镇江个人网站制作广州网站优化公司
  • 简单的报价表模板南京网站优化
  • 营销型网站建设策划代理公司注册合同范本
  • 二建证从住房建设厅网站调出流程北京的网站设计
  • 一般网站有哪些模块gta5网站显示建设中
  • 南京网站维护公司公司手机网站设计
  • 专业做农牧应聘的网站有做网站网站的么
  • 做的网站怎么放到域名专业网站制作的地方
  • 广州朝阳网站建设纯flash网站价格
  • 广州网站设计公司兴田德润电话多少做旅游网站的论文
  • 建设网站源码机械加工网状花纹
  • 网站建设需要多少wordpress 评论ajax分页
  • 舟山网站seo为企业做贡献