c语言学习---void 数据类型

 

 这样的语法是错误的: void a = 10;  void表示无类型, 这样定义一个变量a, 编译器是无法知道给a分配多大的内存空间的

#include<stdio.h>
#include<stdlib.h>



// 1. void 限定函数的返回值, void 函数没有返回值

void function1()//表示这个函数是没有返回值的
{
    printf("hello world");
}

int main()
{
    function1();
    return 0;
}

hello world
#include<stdio.h>
#include<stdlib.h>



//可以不定义函数的类型

function1()
{
    return 10;
}

int main()
{
    int a;
    a = function1();
    printf("%d",a);

    return 0;
}

10
#include<stdio.h>
#include<stdlib.h>


//定义了void, 无返回值, 但是最后还是有return ,这样调用函数function1()的时候虽然不会报错, 但是不建议这样使用

void function1()
{
    return 10;
}

int main()
{
    function1(); 

    return 0;
}

2. 限定函数的传参列表

#include<stdio.h>
#include<stdlib.h>


int function1()
{
    return 10;
}

void function2()
{
    printf("%d, ",function1());
}

int main()
{
    function2();
    return 0;
}

10



#include<stdio.h>
#include<stdlib.h>


int function1()
{
    return 10;
}

void function2()
{
    printf("%d, ",function1(110));//function1()函数没有传参, 但是这里传参, 但是不会报错, 输出的还是10
}

int main()
{
    function2();
    return 0;
}

10



#include<stdio.h>
#include<stdlib.h>


int function1(void) //在这里加上一个void, 表示没有传参
{
    return 10;
}

void function2()
{
    printf("%d, ",function1(110));//function1()加上void 变成function1(void), 这个时候再这样调用function1(void)就会报错, 因为void已经表示无传参了
}

int main()
{
    function2();
    return 0;
}

3. void * 万能指针, 可以不需要强制类型转换就可以给等号左边赋值

比喻说

int* pInt = NULL;

char* pChar = NULL;

//  将pChar复制给pInt

pInt = pChar //这样会报错, 因为指针类型不一样

pInt = (int*)pChar //使用(int*) 进行强制类型转换

//但是可以定义一个万能指针

void* pVoid = NULL;

pChar = pVoid //万能指针, 可以不需要强制类型转换就可以给等号左边赋值

#include<stdio.h>
#include<stdlib.h>


int main()
{
    int* pInt = NULL;
    char* pChar = NULL;
    void* pVoid = NULL;

    pChar = (char*) pInt;
    pChar = pVoid;

    printf("%p", pChar);
    return 0;
}

 

posted @ 2022-10-30 12:54  朵朵奇fa  阅读(249)  评论(0编辑  收藏  举报