Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124804
  • 博文数量: 22
  • 博客积分: 596
  • 博客等级: 二等列兵
  • 技术积分: 874
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-06 12:09
个人简介

Enjoy code,enjoy life!

文章分类
文章存档

2013年(11)

2012年(11)

分类: C/C++

2013-05-04 17:04:14

点击(此处)折叠或打开

  1. #include<stdio.h>


  2. void feed(void *buf,int count)
  3. {
  4.     char *c;
  5.     c=(char *)buf;
  6.     for(;count>=0;count--)
  7.         printf("%c ",c[count]);
  8.     printf("\n");
  9. }

  10. int main()
  11. {
  12.     char * text="123456789";
  13.     feed(text,strlen(text));
  14.     getchar();
  15. }
void*参数类型是无类型指针,典型的如内存操作函数memcpy和memset的函数原型都会用到void*类型,分别为:
void*memcpy(void*dest,constvoid*src,size_tlen);
void*memset(void*buffer,intc,size_tnum);
上例中char*->void*无需强制转换,但是void*->char*一定要强制转换才能编译通过.
如果上例中的main函数改为如下所示:

点击(此处)折叠或打开

  1. int main()
  2. {
  3.     char text="123456789";
  4.     feed(&text,strlen(text));
  5.     getchar();
  6. }
则会报错,因为char只支持一个字符,如果改动如下则可以:

点击(此处)折叠或打开

  1. int main()
  2. {
  3.     char text='1';
  4.     feed(&text,1);
  5.     getchar();
  6. }









阅读(2335) | 评论(0) | 转发(0) |
0

上一篇:GSM/GPRS开发笔记1

下一篇:没有了

给主人留下些什么吧!~~