当前位置:  技术问答>linux和unix

关于void * 的一个问题

    来源: 互联网  发布时间:2016-06-18

    本文导语:  在UNIX坏境编程里面有这样一段话: 从上面所示的函数原型中可以注意到另一个区别: r e a d和w r i t e的第二个参数现在是void * 类型。所有早期的U N I X系统都使用char *这种指针类型。作这种更改的原因是: ...

在UNIX坏境编程里面有这样一段话:
从上面所示的函数原型中可以注意到另一个区别: r e a d和w r i t e的第二个参数现在是void *
类型。所有早期的U N I X系统都使用char *这种指针类型。作这种更改的原因是: ANSI C使用
void *作为类属指针来代替char *。
函数原型和类属指针的组合消去了很多非ANSI C编辑程序需要的显式类型强制转换。
例如,给出了w r i t e原型后,可以写成:
float data〔1 0 0〕;
write (fd, data, sizeof(dat;a))
若使用非A N S I编译程序,或没有给出函数原型,则需写成:
write(fd, (void *)data, sizeof(data));
也可将void *指针特征用于m a l l o c函数(见7 . 8节)。m a l l o c的原型为:
第1章U N I X基础知识9
void * malloc(size_t);
这使得可以有如下程序段:
int * ptr;
ptr = malloc (1000 * sizeof(int));
它无需将返回的指针强制转换成int *类型。
想问void * 到底什么意思。ANSI C 为什么要这么做,char * 怎么就 void * 等价了呢?最好能解释下这段话的意思!谢谢哦!

|
void*就是一无类型的指针,所有其它类型的指针都可以赋值给它而不会所生告警。
为什么加上这个指针类型是因为,当不同类型的指针赋值时都必须显示的做强制转换,否则编译就会告警。所以没有void型指针前,当你write一个非char*指针所指向的内容时就会告警,而引入void型指针后告警不复存在。

|
《ANSI C 标准详解》 - void 类型词条

|
改版了,让很多人感觉不舒服,所以就很少来了。

你的问题我也不懂

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.lang类void的类成员方法: type定义及介绍
  • static void setup_signals __P((void)); 这个__P((void))是什么意思?
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: void定义及介绍
  • 线程函数参数怎么void* p接受(void**)&str)???
  • java命名空间javax.lang.model.type枚举typekind的类成员方法: void定义及介绍
  • void(*signal(int signo,void(*func)(int)))(int)
  • 《Linux程序设计》第三版第124页(void)time(&cur_time);这里前面为什么要加个(void)呢?
  • 深入理解void以及void指针的含义
  • typedef void SigHandler (); ??? 帮忙
  • 那位大侠知道gtk+中,(void *)和gpointer 的区别?谢谢
  • 不解:#define SIG_ERR ((void (*)(int))-1)
  • (void (*) ()) -1;
  • 我声明一个 public void store() 系统说是非法字符 这是什么原因?
  • 关于void*的提问
  • private void arrang(int a[n])这样可以吗,如果不,怎么解决?
  • 请问:fireXXXXX中的fire作何解释?如public void fireListener(ActionEvent e)
  • JAVA语法里的VOID到底怎么用呀?我不知道什么时候加到类或者方法里!?
  • 请教一个错误:void value not ignored as it ought to be
  • 我在c语言下建立一个函数,难道不能在函数名称前加 void 么?
  • public void paint(Graphics g)该语句对吗?
  • 解决C++ 无法从void 转换为LRESULT的方法详解


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3