tag的含义其实就是一个flag,标记遇到空格时的处理
因为遇到空格的时候有可能是一个单词开始或者是一个单词的终止
当tag==1的时候判断是单词终止
此时sum++
当tag==0的时候是单词开始 此时不计数 再遇到空格是sum++
如果要写个函数支持多种数据类型,首先想到的就是C++的模板了,但是有时候只能用C语言,比如在linux内核开发中,为了减少代码量,或者是某面试官的要求...
考虑了一阵子后,就想到了qsort上.qsort的函数原型:
快排时,只要自己实现相应数据类型的比较函数cmpare就可以了.如果比较int型时,一个典型的compare函数如下:
那么,就是说可以利用void *. void *意指未指定类型,也可以理解为任意类型.其他类型的指针可以直接赋值给void *变量,但是void *变量需要强制类型转换为其它指针类型.这个相信大家都知道.那么下面以一个简单的题目为例,来探讨如何在C语言中实现模板函数.
方法1:利用void *.
span#include?"stdio.h"/span
span#include?"stdlib.h"/span
span//typedef?int?T;?//或者下面的也可以./span
span#define?T?int/span
void?FindMin(const?void?*arr,int?arr_size,int?arrmembersize,int?*index,
int?(*cmp)(const?void?*,const?void?*b)){
int?i;
*index=0;
char?*p=(char?*)arr;
char?*tmp=p;
for?(i=1;iarr_size?;i++){
if?(cmp(tmp,p)0){
tmp=p;
}
p+=arrmembersize;
(*index)=((int)(tmp-arr))/arrmembersize;
*//span
可以把指针看作是char?*,如果转换为int?*,那下面的位移就不正确了./span
indexspan=/spanispan;/span
span}/span
spanreturn/span?indexspan;/span
spanint/span?resultspan;/spanspan//result保存的是最小值索引./span
①.、打开C-Free,按ctrl+N创建一个新的文件.
以上就是土嘎嘎小编为大家整理的c语言怎么写tag函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!