设为首页 加入收藏

TOP

C 语言中实现泛型(二)
2014-11-23 17:44:28 来源: 作者: 【 】 浏览:19
Tags:言中 实现
e: 在C语言中用 void * 实现泛型(测试程序) *********************************************************************/ #include #include "vector.h" /* ** 输出 char 类型 */ void output_c(Vector V) { vec_iterator iter; for (iter = vec_begin(V); iter != vec_end(V); ++iter) { printf("%c\n", *(char *)*iter); // 输出时注意 iter 的真正类型是 void ** } } /* ** 输出 double 类型 */ void output_d(Vector V) { vec_iterator iter; for (iter = vec_begin(V); iter != vec_end(V); ++iter) { printf("%.2f\n", *(double *)*iter); // 输出时注意 iter 的真正类型是 void ** } } /* ** 测试 char 类型 */ void test1() { char ch = 'A'; int cnt = 5; Vector my_vec = vec_construct(sizeof(char)); while (cnt--) { vec_push_back(my_vec, &ch); ++ch; } output_c(my_vec); printf("size is %d\n", vec_size(my_vec)); vec_destruct(my_vec); } /* ** 测试 double 类型 */ void test2() { double d = 3.142; int cnt = 13; Vector my_vec = vec_construct(sizeof(double)); while (cnt--) { vec_push_back(my_vec, &d); ++d; } output_d(my_vec); printf("size is %d\n", vec_size(my_vec)); vec_destruct(my_vec); } int main(int argc, char **argv) { test1(); printf("\n"); test2(); return 0; }


4、运行结果

A
B
C
D
E
size is 5

3.14
4.14
5.14
6.14
7.14
8.14
9.14
10.14
11.14
12.14
13.14
14.14
15.14
size is 13
请按任意键继续. . .


因为元素类型为 void *,故迭代器类型为 void **,所以在输出时需注意将 void * 强制类型转换为 data_type *,然后再解引用。




首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C指针原理(69)-C快速入门(2) 下一篇Dialog Bar

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: