谁能介绍一下void* void**的使用,最好加点简短的代码示意,thx

解决方案 »

  1.   

    void*应该是指该函数返回值是一个无类型的指针(地址)
    void**是指该函数返回值是一个指向地址的无类型的指针(地址)
    我是这样理解的!
      

  2.   

    void* 就是纯指针 只表示地址。
    void** 一般表示放纯指针的数组。
      

  3.   

    void** 一般表示放纯指针的数组。----此说不对,呵呵
      

  4.   

    #include <stdlib.h>
    #include <malloc.h>
        void* a;
        void* b;
        void init();
        void final();
        void _getMem (void **x,int i);    void main()
        {        
            init();
            final();
        }
        
        void init()
        {
            a = malloc( (size_t)100 );
            b = malloc( (size_t)1000 );
        
        }
        void final()
        {
            free(a);
            free(b);    
        }    void _getMem (void **x,int i)
        {
            if (i==0)
            {
                *x=a;
            }
            else
            {
                *x=b;
            }
        }    
            
                
                
      

  5.   

    是不是void* 可以代替其他指针?比如代替int*  char* 等等?
    如果是的话,有什么区别?如果没什么区别,我是不是一切指针都可以用void*算了.
    如果说不好,那为什么呢?呵呵~~,我是不是一脑袋的问号呀?
      

  6.   

    void *可能以代替所有指针---没错
    其它指针只有强性转换才能代替void指针如下
    int *pa=(int *)pb;
    与下面的代码意思不一样
    void *pc=(void *)pb;
    int *pa=(int *)pc;
      

  7.   

    如果要用到这个void*指针就必须进行强制类型转换比如转整型int *N=(int *)p,而如果原来是int*p则不需强制转换!
      

  8.   

    当然可以把void*用在所有的指针上,但这样就抹杀了数据类型的区别,
    而数据类型在程序设计中有举足轻重的作用。
    最直接的,你的编译器将不再会因为类型不匹配报错,
    只得你自己去找类型转换的错误,这在大型程序里几乎是“不可能完成的任务”。void**望文生义,是指向指针的指针,有什么用呢?
    和别的“指向指针的指针”意义一样,这是为了改变传入的指针的指向(对一般
    指针通常只能改变传入的指针的内容)
      

  9.   

    void**是指向一个void*型指针的二级指针