void* alloca()中不懂的
请看这个例子:
FILE *open_err_file( char *name )
{
char *buffer;
/* allocate temporary buffer for file name */
buffer = (char *)alloca( strlen( name ) + 5 );
if( buffer ) {
FILE *fp;
sprintf( buffer, "%s.err", name );
fp = fopen( buffer, "w" );
return fp;
}
return (FILE *)NULL;
}
int main( void )
{
FILE *fp;
if((fp = open_err_file( "err_name" ))<0) {
printf( "Unable to open error file\n" );
return(1);
} else {
fprintf( fp, "Hello from the alloca test.\n" );
fclose( fp );
}
return EXIT_SUCCESS;
}
这里的alloca()前怎么要用(char *)n呢?是因为buffer的类型是char *吗?那这个函数的原型定义中的void *中的void的意思就是可以是任何数据类型啦??
可以很莱,但我想清楚的知道,先谢过。。
就是类型转换
把返回的void*转换成char*类型
这样可以减少一个警告
把返回的void*转换成char*类型
这样可以减少一个警告
alloc系列函数返回的都是void*, 直接赋值给非void*的指针会在编译时得到警告
强制转换后就好了
这是一个好习惯,hoh
强制转换后就好了
这是一个好习惯,hoh
下一篇:关于网络编程的,cmsghdr的意思? >>
相关文章:
- · 怎么取得和设置a socket的属主?
- · connect错误
- · 夷??pid的类型可以是int ??
- · 同样的程序,在UNIX不能通过?
- · 请问怎么可以得到一个sock的buffer ?
- · recvline[n]=0 /* null terminate */ ______??
- · 请教一个共享内存问题
- · 一个进程同时拥有的线程数目有最大限制吗??…
- · 这个书里的程序好象错了?
- · ifstrem的eof状态问题
- · 常用函数速查
- · [C]指针练习-3
- · [C]指针练习-2
- · C函数的一个规范写法
- · 有限元软件
- · 用BCB实现超星格式转换为BMP格式
- · 在C++Builder中使用Compress Html Help
- · 利用BCB巧建WEB浏览器
- · BCB3.0下编译含有MFC的程序
- · 利用C++ Builder让软件字幕动起来
- · C++ Builder操纵多媒体数据库
- · 个性凸现的动画特技效果
- · 简单的用户密码管理系统
- · 程序开始时先显示信息框
- · 用C++ Builder创建基于Internet的点对点Chat
- · 用C++Builder6制作Apache动态服务页
- · 在C++Builder窗口中播放Flash
- · 使用C++Builder在WIN2000环境下编制Service
- · 用游戏操纵杆摸拟鼠标
- · 用WinSock控件编写网络聊天器
- · 用C++ Builder实现图像的特技显示
- · 用C++ Builder为计算机增加启动日志
- · WINDOWS下的动态鼠标光标控制
- · 用BCB编程实现挂断拨号网络功能
- · 用C++Builder操纵Excel
- · 用C++ Builder实现网络连接检测程序
- · 使用C++ Buider制作自绘画列表框
- · 关于文件复制的程序代码
