void *

2390阅读 0评论2013-05-04 fj1161
分类:C/C++

点击(此处)折叠或打开

  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. }









上一篇:GSM/GPRS开发笔记1
下一篇:没有了