
>我是否可以确定以下代码
总是有效吗?
>这是一个很好的实现
制作一个不会迷路的物体
在C中,除非你发布它
你自己.
代码:
/* * IEFBooleanArray.h * IEFBooleanArray * * Created by IEf2 on 8/08/10. * copyright 2010 IEf2. All rights reserved. * */#ifndef IEFBOolEANARRAY_H#define IEFBOolEANARRAY_H#include <stdlib.h>#include <string.h>#include <math.h>typedef char * IEFBooleanArrayRef;voID IEFBooleanArrayCreate(IEFBooleanArrayRef *ref);voID IEFBooleanArrayRelease(IEFBooleanArrayRef ref);int IEFBooleanArraySetBitAtIndex(IEFBooleanArrayRef ref,unsigned index,int flag);int IEFBooleanArrayGetBitAtIndex(IEFBooleanArrayRef ref,unsigned index);#endif
/* * IEFBooleanArray.c * IEFBooleanArray * * Created by IEf2 on 8/08/10. * copyright 2010 IEf2. All rights reserved. * */#include "IEFBooleanArray.h"voID IEFBooleanArrayCreate(IEFBooleanArrayRef *ref) { IEFBooleanArrayRef newReference; newReference = malloc(sizeof(char)); memset(newReference,sizeof(char)); *ref = newReference;}voID IEFBooleanArrayRelease(IEFBooleanArrayRef ref) { free(ref);}int IEFBooleanArraySetBitAtIndex(IEFBooleanArrayRef ref,int flag) { int orignalStatus; if(index < 0 || index > 7) return -1; if(flag == 0) flag = 0; else flag = 1; orignalStatus = IEFBooleanArrayGetBitAtIndex(ref,index); if(orignalStatus == 0 && flag == 1) *ref = *ref + (int)pow(2,index); else if(orignalStatus == 1 && flag == 0) *ref = *ref - (int)pow(2,index); return 0;}int IEFBooleanArrayGetBitAtIndex(IEFBooleanArrayRef ref,unsigned index) { int result; int value; value = (int)pow(2,index); result = value & *ref; if(result == 0) return 0; else return 1;} 我更像是一个Objective-C家伙,但我真的想更多地学习C语言.任何人都可以要求更多的“功课”,我可以提高自己吗?
谢谢,
IEf2
> Simple way to set/unset an individual bit
如果你想以高效和便携的方式在C中使用munge,那么你真的应该看一下这个页面的位置,如果你以某种方式提到“位”,这里的每个人都会建议你:
> http://graphics.stanford.edu/~seander/bithacks.html
以下代码序列:
if(result == 0) return 0; else return 1;
可以写成return(result!= 0);,返回resultor return !! result(如果结果应强制为0或1).虽然明确表达意图总是一个好主意,但大多数C程序员更喜欢“结果结果”.因为在C中这是使你的意图清晰的方法. if看起来很不对劲,就像一个警告标签上写着“原始开发人员是一个Java人并且不了解位数”或其他东西.
newReference = malloc(sizeof(char));memset(newReference,sizeof(char));
malloc memset(x,z)== calloc();
您有办法报告IEFBooleanArraySetBitAtIndex的错误(无效索引),但不报告IEFBooleanArrayGetBitAtIndex的错误.这是不一致的.使错误报告统一,或者您的库的用户将进行错误检查.
总结以上是内存溢出为你收集整理的使用“char”的布尔数组全部内容,希望文章能够帮你解决使用“char”的布尔数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)