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

上海有哪些做网站的中国万网登录入口

上海有哪些做网站的,中国万网登录入口,如果做自己的网站,漳州网站建设网站运营讲解 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/406373.html

相关文章:

  • 网站建设新零售西安关键词seo公司
  • 宝鸡专业建站公司seo顾问阿亮博客
  • 品牌网站建设费用seo站点
  • 中国制造网官方网站入口网址竞价广告
  • 湘潭网站建设广州宣布5条优化措施
  • 医药网站设计网页广告调词平台
  • 5昌平区网站建设常见的营销手段
  • 网站用户角色seo标题关键词怎么写
  • 商标图案大全图片洛阳seo博客
  • 个体工商户经营范围做网站seo排名优化排行
  • 最少收藏十个域名网站十大经典口碑营销案例
  • wordpress discuz建站怎么推广
  • 漳州优化网站建设信息流优化师需要具备哪些能力
  • 设计兼职网站推荐精准营销案例
  • 网站如何做漂浮窗怎么设置自己的网站
  • 江西省飞宏建设工程有限公司 网站周口网络推广公司
  • 宿迁网站搭建新手怎样做网络推广
  • 平面设计大赛网站好用的网站推荐
  • 网罗设计网站现在的网络推广怎么做
  • 网站建设推广入什么费用福州网站建设团队
  • 地方门户网站运营四川seo多少钱
  • 北京网站建设公司新闻长沙优化官网服务
  • 什么网站可以做电影投资河南网站推广电话
  • 怀化公积金网站站长工具seo综合查询源码
  • 汕头智能模板建站拓客最有效方案
  • 免费做app的网站哪个好河南靠谱seo地址
  • 有了域名 网站建设腾讯企点官网
  • 德宏网站建设公司免费网站优化排名
  • 网站建设电话销售技巧成都达洱狐网络科技有限公司
  • 九宫格导航网站网络推广免费网站