void* void** 谁能介绍一下void* void**的使用,最好加点简短的代码示意,thx 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 void*应该是指该函数返回值是一个无类型的指针(地址)void**是指该函数返回值是一个指向地址的无类型的指针(地址)我是这样理解的! void* 就是纯指针 只表示地址。void** 一般表示放纯指针的数组。 void** 一般表示放纯指针的数组。----此说不对,呵呵 #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; } } 是不是void* 可以代替其他指针?比如代替int* char* 等等?如果是的话,有什么区别?如果没什么区别,我是不是一切指针都可以用void*算了.如果说不好,那为什么呢?呵呵~~,我是不是一脑袋的问号呀? void *可能以代替所有指针---没错其它指针只有强性转换才能代替void指针如下int *pa=(int *)pb;与下面的代码意思不一样void *pc=(void *)pb;int *pa=(int *)pc; 如果要用到这个void*指针就必须进行强制类型转换比如转整型int *N=(int *)p,而如果原来是int*p则不需强制转换! 当然可以把void*用在所有的指针上,但这样就抹杀了数据类型的区别,而数据类型在程序设计中有举足轻重的作用。最直接的,你的编译器将不再会因为类型不匹配报错,只得你自己去找类型转换的错误,这在大型程序里几乎是“不可能完成的任务”。void**望文生义,是指向指针的指针,有什么用呢?和别的“指向指针的指针”意义一样,这是为了改变传入的指针的指向(对一般指针通常只能改变传入的指针的内容) void**是指向一个void*型指针的二级指针 CString.Mid()不知道错在哪了? 【求助】一个局域网C语言考试系统(毕设),我可以创新性地做些什么呢? 问一个关于心跳包的小问题? MFC入门 关于画面闪烁问题 错在那里?ADO调用带参数存储过程问题 如何使 CListCtrl 控件的所有单元格都具有编辑功能 关于com组件的问题,没分了,求解答 谁能详细介绍一下二、八、十、十六进制的发展由来及它们之间怎样进行换算? 发送邮件的问题 高手请过来一试:那位兄弟知道网络两个局域网内部机子之间如何通信,比如QQ,是一个怎样的实现过程? (Vc++中如何取得用户、系统环境变量中特定的环境变量?)(在线等待)!
void**是指该函数返回值是一个指向地址的无类型的指针(地址)
我是这样理解的!
void** 一般表示放纯指针的数组。
#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;
}
}
如果是的话,有什么区别?如果没什么区别,我是不是一切指针都可以用void*算了.
如果说不好,那为什么呢?呵呵~~,我是不是一脑袋的问号呀?
其它指针只有强性转换才能代替void指针如下
int *pa=(int *)pb;
与下面的代码意思不一样
void *pc=(void *)pb;
int *pa=(int *)pc;
而数据类型在程序设计中有举足轻重的作用。
最直接的,你的编译器将不再会因为类型不匹配报错,
只得你自己去找类型转换的错误,这在大型程序里几乎是“不可能完成的任务”。void**望文生义,是指向指针的指针,有什么用呢?
和别的“指向指针的指针”意义一样,这是为了改变传入的指针的指向(对一般
指针通常只能改变传入的指针的内容)