1. 把一个字符串逆序。
char* Reverse(char* s) { // p指向字符串头部 char* p = s ; // q指向字符串尾部 char* q = s ; while( *q ) ++q ; q -- ; // 交换并移动指针,直到p和q交叉 while(q > p) { char t = *p ; *p++ = *q ; *q-- = t ; } return s ; }
2. 数组求和
如果n等于0,则数组的和等于0
如果n不等于0,则数组的和等于n-1个元素之和加上n-1元素的和。
// 数组求和 int sum(int*a, int n) { return n ==0?0 : sum(a, n -1) + a[n -1]; }
3. 计算一个字节(byte)里有多少为(bit)被置1
int b_check(char x) { int i, counter=0; for(i=0; i<8; i++) { if(1==((x>>i)&1)) counter++; } return counter; }
4. 用C语言判断机器是大端模式还是小端模式
void IsBigEndian() { short int a = 0x1122;//十六进制,一个数值占4位 char b = *(char *)&a; //通过将short(2字节)强制类型转换成char单字节,b指向a的起始字节(低字节) if( b == 0x11)//低字节存的是数据的高字节数据 { //是大端模式 } else { //是小端模式 } }