zoukankan      html  css  js  c++  java
  • C语言学习笔记--void关键字

    1.C语言中Void关键字的含义

    void 修饰函数返回值和参数——为了表示“无”,如果函数没有返回值,那么应该将其声明为 void,同样的,如果函数没有参数,也应该声明其参数为 void

    //f()函数任意参数,返回值默认
    f() 
    {
    
    }
    
    //函数无参无返回值
    void f(void)
    {
    
    }

    2.C语言中不存在 void 变量

    C 语言没有定义 void 究意是多大内存的别名,没有 void 标尺,无法在内存中裁出大小

    #include<stdio.h>
    int main()
    {
      
        void var;//error,不能定义 void 型的变量
        void array[5];//error,不能定义 void 型的变量
        //在 ANSI C 编译器中无法通,支持 GNU 标准的 gcc 下为 void 大小为 1,是合的
        void* pv;可以定义void*的指针
        printf("sizeof(void)=%d
    ",sizeof(void));
    }

    3.void 指针

    (1)C 语言规定只有相同类型的指针才可以相互赋值

    (2)void* 指针作为左值用于“接收”任意类型的指针

    (3)void* 指针作为右值使用时需要进行强制类型转换

    int* pI = (int*)malloc(sizeof(int));
    char* pC = (char*)malloc(sizeof(char));
    void* p = NULL;
    int* pni = NULL;
    char* pnc = NULL;
    p =pI; //ok,void*指针 p 可接收任何类型的指针
    pni= p; //error,void*须强制类型转换,即 pni =(int*)p;
    p =pC; //ok
    pnc= p; //error,应为 pnc=(char*)p;

    通过 void*实现 MemSet 函数

    #include <stdio.h>
    void MemSet(void* src, int length, unsigned char n)
    {
        unsigned char* p = (unsigned char*)src;
        int i = 0;
        for(i=0; i<length; i++)
        {
            p[i] = n;
        }
    }
    int main()
    {
        int a[5];//这里可以是任何其他类型,如 char a[5];double a[5]等。
        int i = 0;
        MemSet(a, sizeof(a), 0);
        for(i=0; i<5; i++)
        {
            printf("%d
    ", a[i]);
        }
        return 0;
    }

    参考资料:
    www.dt4sw.com
    http://www.cnblogs.com/5iedu/category/804081.html

  • 相关阅读:
    cpio命令
    INI文件格式
    ubuntu死机怎么办
    vim中执行shell命令
    android安装busybox
    putty远程连接ubuntu
    java sdk与jdk区别
    一些使用JSP 编程技巧(转)
    ubuntu12.04 下安装 jdk1.7 maven3.1
    Java Web进阶步骤
  • 原文地址:https://www.cnblogs.com/CoderTian/p/5894890.html
Copyright © 2011-2022 走看看