前两天看到一篇文章是些如何不用+做加法的算法,其中有人提到可以这样实现:
int add(int a,int b){ char * c; c = (char *) a; return (int)&c[b]; }
理解了半天,现在做一下记录,防止自己忘记
将一个整形强制转化为指针,其实指针的指向的地址就是该整数的值,例如a是10的话那么c指向的地址就是0xa,使用数组下标其实相当于对原来的地址做加法操作,c[b]和*(c+b)是相同的操作,然后进行取操作就能返回a+b的结果。
前两天看到一篇文章是些如何不用+做加法的算法,其中有人提到可以这样实现:
int add(int a,int b){ char * c; c = (char *) a; return (int)&c[b]; }
理解了半天,现在做一下记录,防止自己忘记
将一个整形强制转化为指针,其实指针的指向的地址就是该整数的值,例如a是10的话那么c指向的地址就是0xa,使用数组下标其实相当于对原来的地址做加法操作,c[b]和*(c+b)是相同的操作,然后进行取操作就能返回a+b的结果。