小结
lm_123_456
本人热爱学习新技术,有良好的自学能力,热爱编程,有责任心,执行能力强,对待生活积极向上,乐观,为人诚恳,积极接受困难和挑战
展开
-
获取二进制中1的个数
这是我写的第一种解决方案,你看看有什么问题^_^int NumberOf1(int n){ int count = 0; while(n){ if(n & 1){ count++; } n = n >> 1; } return count; }这种解法是将数据n每次右移一位和1进行&运算来原创 2016-07-18 21:02:37 · 5626 阅读 · 0 评论 -
与CPU相关的计算题
假定我们有 3 个程序,每个程序花费 80%的时间进行 I/O,20%的时间使用 CPU。每个程序启动时间和其需要使用进行计算的分钟数如下,不考虑进程切 换时间。 请问在多线程/进程环境下,系统的总响应时间是() A.22.5 B.23.5 C.24.5 D.25.5解答: 多线程编程时 CPU 利用率的求法: 只有一个进程的时候,CPU 利用率肯定是 20%。 两个进程的时候:C原创 2016-08-12 09:07:38 · 4290 阅读 · 1 评论 -
a 与 &a 的区别
相信大家会经常遇到指针加一的情况,而且差不多每次遇到都会傻眼吧,不过没关系,现在我们来一起谈谈吧^_^举个例子来解说吧:int main(){ int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a + 1); printf("%d, %d\n", *(a + 1), *(ptr - 1)); return 0;}大家要注意:对原创 2016-07-21 10:48:26 · 1560 阅读 · 0 评论 -
如何判断大小端
大端模式: 字数据的高字节存储在低地址中,而字数据的低字节存储在高地址中。(高低低高)小端模式: 字数据的高字节存储在高地址中,而字数据的低字节存储在低地址中。(高高低低)大端模式的内存布局如下: int i = 1 —————————————> 高地址 0x0 0x0 0x0 0x1小端模式的内存布局如下:原创 2016-07-20 10:20:20 · 514 阅读 · 0 评论 -
memcpy()函数与memmove()函数
void *memcpy(void *dest, const void *src, size_t n)功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置处。函数说明: 1> src 和 dest 所指的内存区域可能重叠,但是如果src 和 dest 所指的内存区域重叠,memcpy()函数并不能确保src所在重叠区域在被拷贝之前不被覆盖,这种情况可以使原创 2016-07-20 09:43:39 · 277 阅读 · 0 评论 -
strspn()函数和strcspn()函数
size_t strspn(const char *s, const char *accept)功能: 用来计算字符串s中从头开始连续有几个字符都属于字符串accept。函数说明: strspn() 从参数s字符串的开头计算连续的字符,而这些字符都完全是accept所值字符串中的字符。即就是说,若strspn()的返回值为n,就说明字符串s开头连续有n个字符都是属于字符串accept内的字符。返回值原创 2016-07-20 08:47:58 · 996 阅读 · 0 评论 -
strstr()函数
char *strstr(const char *haystack, const char *needle)参数说明: haystack 为一个源字符串指针, needle为一个目的字符串的指针。。函数功能: 从字符串haystack中寻找needle第一次出现的位置,但是不比较结束符NULL。返回值说明: 成功返回第一次出现needle位置的指针,否则返回NULL。原创 2016-07-19 09:28:27 · 289 阅读 · 0 评论 -
strchr()函数与strrchr()函数的实现
char *strchr(const char *s, int c) 功能: 查找字符串s中首次出现c字符的位置说明: 返回首次出现c的位置的指针,返回的地址是被查找的字符串指针开始的第一个与c相同字符的指针,若s中不存在c则返回NULL。。。。返回值: 成功返回要查找的字符第一次出现的位置,否则返回NULL。。。。以下是自己实现的strchr()函数:char *my_strchr(const原创 2016-07-19 08:52:41 · 12588 阅读 · 1 评论 -
strcat()和strncat()函数的实现
char *strcat(char *dest, const char *src) 该函数的功能是连接字符串src和dest,将src的内容接入到dest的后面,要求dest和src无重叠,并且dest有足够的空间容纳src。char *my_strcat(char *dest, const char *src){}char *strncat(char *dest, const原创 2016-07-18 23:38:38 · 949 阅读 · 0 评论 -
strcmp()和strncmp()函数的实现
int strcmp(const char *s1, const char *s2) 该函数的功能是比较字符串s1和s2的大小,从左向右比较(按ASCII值的大小进行比较),直到出现不同的字符或遇到‘\0’为止。int strcmp(const char *s1, const char *s2){ if(s1== NULL || s2 == NULL) { r原创 2016-07-18 23:26:32 · 1022 阅读 · 0 评论 -
strcpy()函数与strncpy()函数实现
char *strcpy(char *dest, const char *src) 该函数是将字符串src拷贝至dest其实现如下:char *my_strcpy(char *dest, const char *src){ if(dest == NULL || src == NULL) { return dest; } while((*dest++原创 2016-07-18 23:05:11 · 295 阅读 · 1 评论 -
函数strlen()的实现
size_t strlen(const char *s) 函数用来求得字符串s的长度该函数的实现如下:size_t strlen(const char *s){ if(s == NULL) { return 0; } int count = 0; while(*s++ != '\0') { count++;原创 2016-07-18 22:55:01 · 1202 阅读 · 0 评论 -
字符串的扩展
这里所说的扩展是: 例如 “-a-c-f” —-> “abcdef”void str_expand(char *dest_str, const char *src_str){ if(dest_str == NULL || src_str == NULL) { return ; } char *dest = dest_str; const c原创 2016-07-18 22:46:15 · 264 阅读 · 0 评论 -
将字符串中的空格替换为%20
这种替换问题要考虑是否会覆盖原字符串,若是在源字符串上直接替换。看到这个问题我觉得很多人都会想到直接从头开始替换,即遇到空格就将其替换为%20,每次都要将空格后的字符后移两个字节。这种解法的时间复杂度为O(n^2)!!!另外一种较好的解法是从后往前替换,具体做法是从头遍历计算所有空格数,计算出总的长度。 该解法的前提条件是若在源字符串上替换就要求源字符串有足够的空间来容纳新的字符串。时间复杂度原创 2016-07-18 22:34:28 · 1157 阅读 · 0 评论 -
C语言指向多维数组的指针
转自http://blog.csdn.net/helloeveryon/article/details/51851188?locationNum=13&fps=1本小节以二维数组为例介绍多维数组的指针变量。 多维数组的地址 设有整型二维数组a[3][4]如下: 0 1 2 3 4 5 6 7 8 9 10 11 它的定义为: int a[3][转载 2016-12-25 13:54:22 · 605 阅读 · 0 评论