![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
【深入C语言】
Always__
这个作者很懒,什么都没留下…
展开
-
返回一个二进制位模式反转后的值
#include#include#includeint main(){ int rel=0;int value; int bit=0; scanf("%d",&value); rel<<=1; bit=value%2; rel=bit; value/=2; printf("%d\n",rel); }原创 2015-01-10 22:11:27 · 452 阅读 · 0 评论 -
将参数字符串中的字符反向排列
*编写一个函数reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。要求:不能使用C函数库中的字符串操作函数。*/char * reverse_string(char * string) { int len = 0; char temp; char *end = string; while(原创 2015-03-14 16:45:04 · 583 阅读 · 0 评论 -
可变参数列表函数实现
#include #include float average(int val, ...){ va_list arg; int count; float sum = 0; //准备访问可变参数 va_start(arg, val); //添加取自可变参数列表的值 for (count = 0; count < val; count +=1) { sum += va_原创 2015-03-14 11:27:22 · 472 阅读 · 0 评论 -
C语言同学录实现
作业:实现一个通讯录;通讯录可以用来存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:1. 添加联系人信息2. 删除指定联系人信息3. 查找指定联系人信息4. 修改指定联系人信息5. 显示所有联系人信息6. 清空所有联系人contacts.h#ifndef CONTACTS_H#define CONTACTS_H原创 2015-03-17 22:26:27 · 1614 阅读 · 0 评论 -
【C语言】C语言的const与C++的const区别
1、C中CONST的使用。const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微妙在何处呢?问题1:const变量 和 常量?为什么我象下面的例子一转载 2016-04-09 11:07:19 · 551 阅读 · 0 评论 -
【C语言】总结C语言深度剖析
C语言深度剖析sizeof是关键字而不是函数break终止本层循环。continue终止本次循环、柔性数组,数组的大小为0的数组,一般用于结构体内部的最后一个数据,用来动态扩展结构体大小。union关键字,sizeof()确定的大小是其内部最大成员的占据空间。内部成员都是从地址的开始处偏移。C语言的struct 内部数据默认是私有的,而class内部成员默认为公有的。原创 2016-04-09 11:06:10 · 910 阅读 · 0 评论 -
malloc原理和内存碎片
当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干) 4、建立映射关系(虚拟地址到物理地址) 重新执行发生缺页中断的那条指令 如果第3步,需要读取磁盘,那么这次缺页中断就是majflt,否则就是minflt。 内存分配的原理从操作转载 2016-03-27 11:35:02 · 4248 阅读 · 2 评论 -
【C语言】整型溢出和整型提升
什么是整型溢出:C语言的整型问题相信大家并不陌生了。对于整型溢出,分为无符号整型溢出和有符号整型溢出。对于unsigned整型溢出,C的规范是有定义的——“溢出后的数会以2^(8*sizeof(type))作模运算”,也就是说,如果一个unsigned char(1字符,8bits)溢出了,会把溢出的值与256求模。例如:unsigned char x = 0xff; pr原创 2016-05-11 01:01:58 · 2501 阅读 · 0 评论 -
【C语言】动态内存分配alloca
头文件#include函数原型void* _cdecl alloca(size_t);参数是申请分配内存的字节数,返回值为分配到的内存地址。alloca主要的特征是,它是在栈上开辟的空间,当它作用域结束时会自动释放内存,不用像malloc那样,要用free动态释放空间。还有就是malloc开辟空间成功后,并未对内存空间初始化,必须调用memset来进行初始化,而alloca则初原创 2016-05-11 17:17:58 · 4095 阅读 · 0 评论 -
【C语言】变长数组与柔性数组
前两天看程序,发现在某个函数中有下面这段程序:int n; //define a variable nint array[n]; //define an array with length n在我所学的C语言知识中,这种数组的定义在编译时就应该有问题的,因为定义数组时,数组的长度必须要是一个大于0的整型字面值或定义为 const 的常量。例如下面这样in转载 2016-05-11 17:34:14 · 4343 阅读 · 0 评论 -
整数数字之和
#includeint DigitSum(int n){ int i,count; if(n>0) { i=n%10; n=n/10; return i+DigitSum(n); } else return 0;}int main(){ int rat=0; int a=1729; rat=DigitSum(a); printf("%d\n"原创 2015-03-12 21:36:55 · 534 阅读 · 0 评论 -
幂函数的递归算法
#includeint fun(int n,int k){ int count=0; if(k==1) { return n; } else { --k; count=n*fun(n,k); return count; }}int main(){ int a=2,b=3;// printf("请输入两个整数\n");// scanf("%d%d原创 2015-03-12 21:02:47 · 1963 阅读 · 0 评论 -
void my_strcpy
#includevoid my_strcpy(char *dest,const char *str){ while (*str!='\0') { *dest=*str; dest++; str++; }}int main(){ char p[]="asdasd"; char *q="zxczxc"; my_strcpy(p,q); printf("%s\n",p原创 2015-01-10 22:17:49 · 536 阅读 · 0 评论 -
折半查找
折半查找int fun(int *a,int left,int right,int x){ int mid; int num=-1; mid=(left+right)/2; if(left<=right) { mid=(left+right)/2; if (x>a[mid]) { num=fun(a,mid+1,right,x); } else if (x<a原创 2014-12-31 13:17:23 · 491 阅读 · 0 评论 -
大小写字母转化
int ch; while ((ch=getchar())!=EOF) { if (ch>='A'&&ch<='Z') { ch=ch+32; } else putchar(ch) ; }原创 2014-12-31 13:25:12 · 532 阅读 · 0 评论 -
二进制反转输出
int a = 25;//00000000000000000000000000011001 int i; for(i = 0; i <=sizeof(int)*8 - 1; i++){ if((1 << i) & a) printf("%c", '1'); else printf("%c", '0'); }原创 2015-01-03 17:08:05 · 692 阅读 · 0 评论 -
欧几里得最大关公约数
欧几里得最大关公约数unsigned int gys(int x,int y){ unsigned k; if (x<y) { k=x; x=y; y=k; } if ( x % y == 0) { retury y; } else { retury gys ( y,x % y) ; }}原创 2015-03-11 12:06:12 · 473 阅读 · 0 评论 -
数字字符转化整数
函数应该把这些数字字符转换为整数并返回这个整数。如果字符串参数包含了任何非数字字符,函数就返回零。int ascii_to_integer(char *string){ int s =0; while(*string != '/0') { if( (*string)'9' ) return 0; s = s * 10 + *string-'0'; string++原创 2015-03-11 11:16:15 · 591 阅读 · 0 评论 -
C语言——字符串查找字符的两个函数
my_strchr()函数的功能是:在字符串str中查找字符ch第一次出现的位置,找到后函数返回指向该位置的指针。如果该字符不存在在字符串中,则返回NULL。my_strrchr()函数的功能是:在字符串str中查找字符ch最后一次出现的位置,找到后函数返回指向该位置的指针。如果该字符不存在在字符串中,则返回NULL。char * my_strchr(char const *str,char原创 2015-03-21 16:50:14 · 1272 阅读 · 0 评论 -
数字字符转化数字正负浮点数
编写一个函数,将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)例如:“12.34“ 返回12.34 “-123.34“ 返回-123.34函数原型:double my_atof(char *str){}double my_atof(char *str){ int flag1=0,flag2=0; if (*str=='-') { flag1=0;原创 2015-03-11 11:45:44 · 787 阅读 · 0 评论 -
厄密多项式
int hermite(int n, int x){ if(n<=0) { return 1; } else if(n=1) { return (2*x); } else if (n>=2) { return (2*x*hermite(n-1,x)-2*(n-1)*hermite(n-2,x)); }}int main(){ int c,d; int原创 2015-03-11 11:17:45 · 559 阅读 · 0 评论 -
reinterpret_cast类型转换运算符的理解
今天同学在群里发了一篇题,关于reinterpret_cast类型转换的,个人觉得有必要记录一下:题目代码如下:#include using namespace std;class A {public: virtual void func() { cout << "A::func" << endl; } virtual void funcA() { cout << "原创 2016-04-28 18:39:09 · 1021 阅读 · 0 评论