当前位置:首页 » 《随便一记》 » 正文

void:你以为你很了解我?你个渣男~_m0_57304511的博客

25 人参与  2022年04月18日 10:18  分类 : 《随便一记》  评论

点击全文阅读


目录

一、总述

二、分述

(1)void类型

void为什么无法用来定义变量?

(1)void修饰函数返回值

(2)void指针类型(作用:通常用来设计通用接口)

三、需要注意的代码

代码1

代码2


一、总述

void 声明函数无返回值或无参数,声明无类型指针

二、分述

(1)void类型

void为什么无法用来定义变量?

void无法用来定义变量,因为不确定该开辟多少空间。在vs中,sizeof(void)的结果是0在linux中用sizeof(void)结果是1void无法用来定义变量的原因除了内存空间大小不确定之外,更重要的原因就是vlid类型本身就被编译器解释为空类型,所以编译器就强制的不允许用其来定义变量。

定义变量的本质就是开辟空间 而void作为空类型,理论上是不应该开辟空间的,即使开了空间,也仅仅作为一个占位符看待,所以,既然无法开辟空间,那么也就无法作为正常变量使用,既然无法使用,编译器干脆不让他定义变量。同样的,也无法通过void进行强制类型转换。

(1)void修饰函数返回值

1、占位符,让用户明确不需要返回值

2、告知编译器没有返回值,即如果用户用变量接收返回值的话就会报错

3.void充当函数的形参列表:告知用户或者编译器,该函数不需要传参。

结论:如果一个函数没有参数,就在()内加上void;如果一个函数不需要返回值或者没有返回值,就在返回值类型处加上void。

int test1()
{
    return 1;
}
int test2()
{
    return 2;
}
int main()
{
    test1(1,2,3,4);//编译器在vs上不会报错且不会有警告可以正常运行,在linux中一样可以正常编译。
    test2(1,2,3,4);//编译器在vs上不会报错但会有警告可以正常运行,但是在linux中无法正常编译。
    //上述两种情况对于传参时在栈区中开辟内存都没有任何的影响(在vs中)
}

(2)void指针类型(作用:通常用来设计通用接口)

注意:void*是可以定义变量的,因为指针占据的内存大小是明确的。

应用:void*可以被任何类型的指针接收,同时void*可以接收任意指针类型(常用),在库函数中,系统的接口设计上 ,尽量设计成通用接口,从而就收各种类型的数据,例如memset()函数。

三、需要注意的代码

代码1

#include<stdio.h>
int main()
{
    void *p =NULL;
    p++;
    p--;
    //上面这两种写法,编译器均会报错,因为不明确++或者--应该跨越的步长,换言之,如果想进行类似的++或者--操作
    //就需要明确指针指向的变量类型所占据的内存空间的大小,之前已经指出,void在vs中所占据的内存空间大小为0.且
    //无法被用来定义变量,所以自然无法用来进行++--的操作,但是在linux中是可以运行的,因为linux中明确了void
    //类型的大小为1。
}

代码2

注意:C语言中无法对void *类型指针变量进行解引用,例如下面这段代码就会报错:

int main()
{
    int a = 10;
    void * p = &a;//因为void类型的指针可以接收任意类型的数据的指针(地址)
    
    *p=20;
    printf("%d",*p);
    //这两段代码都会报错,p是void*类型的,对p解引用,*p就是指向指针所指向的目标或者说类型,对p解引用
    //*p的类型就是void,而编译器无法通过void类型来解析其对应的空间及类型以及里面的数据,所以编译器会
    //报错,在Linux中同样无法正常的运行。因为在vs和Linux中均无法用void来定义变量
    return 0;
}

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/38312.html

类型  变量  编译器  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 谢尽长安花+后续+结局沈照霜宁砚完本_谢尽长安花+后续+结局(沈照霜宁砚)
  • 不见青山存完结(霍青秦兮霍宴)_不见青山存完结霍青秦兮霍宴
  • 他的干妹妹怀孕后,我闪婚了文集(林诺陆深)全书免费_(林诺陆深)他的干妹妹怀孕后,我闪婚了文集后续(林诺陆深)
  • 江先生,你要听话列表列表_江先生,你要听话列表(许清欢江砚舟)
  • 一抹斜阳相思泪后续+必读夏知微陆远川完本_一抹斜阳相思泪后续+必读(夏知微陆远川)
  • 「不当假少爷后,我娶了首富当老婆」免费试读_萧寒沈凌薇章节多结局预体验‌
  • 全书浏览我死后,数万网友对我进行审判火爆(董天华尹瑶)_我死后,数万网友对我进行审判火爆(董天华尹瑶)全书结局
  • 纨绔恶少抽盲盒选妻子,我换嫁绝嗣总裁后他发疯求原谅+免费+后续列表_纨绔恶少抽盲盒选妻子,我换嫁绝嗣总裁后他发疯求原谅+免费+后续(阮玉绵)
  • 完结文晚云为落日溺亡++后续列表_完结文晚云为落日溺亡++后续(裴念舒)
  • [修仙:我在云疆养仙蚕]章节多结局预体验‌_「林珂」小说无删减版在线阅读
  • 全书浏览我死后,数万网友对我进行审判++番外(董天华尹瑶)_我死后,数万网友对我进行审判++番外(董天华尹瑶)全书结局
  • 被兄弟俩接连当工具人后,我杀疯了后续+(贺云舟)全书免费_(贺云舟)被兄弟俩接连当工具人后,我杀疯了后续+后续(贺云舟)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1