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

点蜜免费空间上传网站建设第三方公众号平台网站教程

点蜜免费空间上传网站,建设第三方公众号平台网站教程,制作网页可以用,wordpress pdf 显示作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! void前言一、 void 关键字二、 void修饰函数返回值和参数三、void指针3.1void * 定义的…

作者:小树苗渴望变成参天大树
作者宣言:认真写好每一篇博客
作者gitee:gitee
在这里插入图片描述
如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧!

void

  • 前言
  • 一、 void 关键字
  • 二、 void修饰函数返回值和参数
  • 三、void指针
    • 3.1void * 定义的指针变量可以进行运算操作吗
    • 3.2void * 用来设计通用接口
  • 四、总结


前言

我相信再大家潜意识里对void的理解解释空类型的意思吧,觉得void的作用并不是那么的多,这篇博客让你充分认识到void的含义以及作用


一、 void 关键字

void通俗的来说和其他的数据类型世同级的,但是void关键字的用法非常多,他也有一些做不到的事情。

void是否可以定义变量?

#include <stdio.h>
#include <windows.h>
int main()
{
void a;
system("pause");
return 0;
}

运行结果:
在这里插入图片描述

我们看到void是定义不了变量的,我们知道用数据类型定义变量是为其分配多大的空间,而类型的大小就起到开辟多大空间的作用,那让我们来看看void的大小是多少:

在这里插入图片描述
这下我们知道为什么void定义不了变量了吧,这是再vs2019上看到的结果,那我们再vscode的gcc编译器看看结果:
在这里插入图片描述

我们看到再gcc编译器上的void的大小是1,为什么还是不可以定义变量呢?

void本身就被编译器视为空类型,强制的不允许定义变量

总结:为何 void 不能定义变量?
定义变量的本质:开辟空间
而void作为空类型,理论上是不应该开辟空间的,即使开了空间,也仅仅作为一个占位符看待,所以,既然无法开辟空间,那么也就无法作为正常变量使用,既然无法使用,编译器干脆不让他定义量。

二、 void修饰函数返回值和参数

场景1:void用来作为函数返回值

test()
{;
}
int main()
{int a = test();printf("%d", a);system("pause");return 0;
}

在这里插入图片描述
我们看到函数不用返回值是正确的,并且默认返回的int类型的,不用void会让程序员不知道你是没有返回值还是返回int类型,那void的好处是什么呢??1.占位符,让用户明确不需要返回值。2.告知编译器,返回值无法接收

场景2:void 作为函数参数
我们先来看一个代码:不带参数的函数传参

void test()//默认不要参数
{;
}
int main()
{test(2,5,"niaho");system("pause");return 0;
}

这样的代码并不会出现错误,原因是你传进去,但没有东西接收

void test(void)//明确告诉你不要参数
{;
}
int main()
{test(2,5,"niaho");system("pause");return 0;
}

这样就会报错,明确说不用参数,你传参就会报错

结论:
1.如果一个函数没有参数,将参数列表设置成void,是一个不错的习惯,因为可以将错误明确提前发现
2.另外,阅读你代码的人,也一眼看出,不需要参数。相当于"自解释"

题外话,尽管如此,如果这点你不习惯,也不勉强。

三、void指针

void不能定义变量,那么void*呢?

#include <stdio.h>
#include <windows.h>
int main()
{void* p = NULL; //可以system("pause");return 0;
}

在这里插入图片描述

我们看到可以通过并且没有报警,为什么void可以呢?因为void是指针,是指针,空间大小就能明确出来

我们再来看看void*有那些特性:

#include <stdio.h>
#include <windows.h>
int main()
{
void *p = NULL;
int *x = NULL;
double *y = NULL;
p = x; //虽然类型不同,但是编译器并不报错
p = y; //同上
x=p;
y=p
system("pause");
return 0;
}

在这里插入图片描述

我们看到编译器叶没有报错,我们可以得出如下结论:
1.void的作用是用来接受任意指针类型的。
2.任意指针也可以接受void
类型的。

这块在后面如果想设计出通用接口,很有用,例如:

/void * memset ( void * ptr, int value, size_t num );

3.1void * 定义的指针变量可以进行运算操作吗

我们上面介绍了void可以定义指针变量,我们知道指针变量是可以进行运算操作的,那void*的指针可以进行运算操作吗?我们一起来看看:

(NULL实际就是在0进行强转变成void*类型)

#include <stdio.h>
#include <windows.h>
int main()
{
void *p = NULL;
p++; //报错
p += 1; //报错
system("pause");
return 0;
}

在这里插入图片描述
我们之前在指针那一节说过,指针运算的大小和类型有关,例如int的类型,加1就跳过一个整型,那么void在vs2019上不知道大小的,自然加1是不知道的,所以会报错。

那让我们来看一下gcc编译器上的结果吧
在这里插入图片描述
我们看到gcc编译器上可以通过,原因是在gcc编译器的void大小为1,又了固定的大小

3.2void * 用来设计通用接口

对于一个函数我们需要接受的类型可能不一样,这时候就需要用void*作为接口来实现,这里我不在具体介绍那些是需要接口的例子,大家可以看我之前谢的关于有接口的例子:
qsort
内存操作函数

四、总结

通过这篇博客,我希望大家对void的类型的含义和用法又有了更深的理解,这篇的难度不大,只是为了拓展我们的知识面,希望能够版主到大家,今天我们就说到这里,我们下篇再见
在这里插入图片描述

http://www.yayakq.cn/news/79448/

相关文章:

  • 建网站多少钱一个平台ios网站开发工具有哪些
  • 垦利县建设局网站网站流量查询 优帮云
  • 大厂县网站建设或SEO优化爱吖网
  • 移动端网站交互效果最好的镇江seo网站
  • 社区网站的推广方案什么的网站策划
  • 手机页面网站模板怎么卖wordpress同步社交
  • 网站上传后如何设置首页友情链接又称
  • 小型网站维护wordpress 改地址
  • 广州网站建设网站推广有人有片在线观看的资源
  • 荥阳市建设局网站文化网站设计经典案例
  • 网站开发 知乎青岛硅谷网站建设
  • 管理系统和网站哪个好做有效的网站建设公
  • 营销网站类型做软件
  • 营销型网站模板免费下载东莞网站设计如何
  • 网站建设 资产网站建设最基础的是什么
  • 工业智能科技网站设计可信赖的做pc端网站
  • 甘肃第九建设集团公司网站霸气又聚财的公司名字大全
  • 中国建设银行辽宁分行网站华夏名网网站建设
  • 苏州网站建设的公司哪家好seo网站标题
  • 盐城市网站建设公司网络运维工程师就业分布
  • 电商运营的基本流程seo建设网站
  • 那些网站可以做兼职网站如何做更新
  • wordpress英文站源码网站cms系统排名
  • 如何做一个网站的seo网站说服力营销型网站策划
  • 不用下载的游戏直接玩吉林市网站建设优化
  • 怎么制作网站内容制作书签图片大全简单漂亮
  • 成品软件网站推荐怎么编写一个网页
  • 网站点击率原因上海c网站建设
  • php网站开发常用框架拖拽网站怎么做的
  • ps里怎么做网站广西网站建设培训