c
文章平均质量分 64
Oragen
这个作者很懒,什么都没留下…
展开
-
循环的实现与优化
初学C语言对于循环能够用常用的方法实现,但实现的方法多种多样,下面就以求100以内的素数为例,介绍求素数的三种循环方法。通常的程序为:# includevoid main(){ for(int i=2;i { for(int j=2;j {原创 2018-01-21 15:30:27 · 207 阅读 · 0 评论 -
从汇编角度看函数参数传递
基本理论:函数参数传递机制问题在本质上是调用函数过程和被调用函数在调用发生时进行同的方法问题。基本的参数传递机制有两种,值传递、引用传递。值传递: 在值传递过程中,被调函数的形参作为被调函数的局部变量,即在该函数栈中开辟内存空间以存放由主函数传递进来的实参的值,从而成为实参的一个副本。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主函数实参的值。引用传递:引用传递...原创 2018-06-05 16:11:39 · 5935 阅读 · 0 评论 -
define和typedef的区别详解
原文链接:http://developer.51cto.com/art/201104/256060.htmtypedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。而#define是预处理指令。下面让我们一起来看两者的区别。typedef是C语言语句,其功能是用户为已有数据类型取“别名”。 例如: typedef in...转载 2018-06-06 09:40:12 · 1190 阅读 · 0 评论 -
解析C语言中常用的格式化输入、输出函数
fprintf(格式化输出数据至文件) 这个函数的功能类似于文件操作函数 fwrite();通过一个文件描述符将数据写入该文件描述符所指向的文件中。函数定义:int fprintf(FILE * stream, const char * format,…….);函数说明 :fprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数stream指定...原创 2018-07-18 12:53:00 · 7671 阅读 · 0 评论 -
C语言中不同类型变量的解读
C语言中变量分为四类,分别是 auto 自动变量tatic 静态存贮分配变量(又分为内部静态和外部静态)extern 全局变量(用于外部变量说明)register 寄存器变量(分配在硬件寄存器中)四大类,所有变量必须先说明(定义),后使用。自动变量(局部变量)局部变量:在一个函数开头或段开头处说明的变量,它有几个特征:作用域为定义它的函数编译器不会对自...原创 2018-07-20 23:17:23 · 2344 阅读 · 0 评论 -
C/C++编程mysql接口大全
做C++ 开发时,使用MySQL 数据库的时候 难免 会发生不知道数据库的接口的问题 下面是mysql数据库的一些接口mysql_affected_rows() 返回被最新的UPDATE, DELETE或INSERT查询影响的行数。mysql_close() 关闭一个服务器连接。mysql_connect() 连接一个MySQL服务器。该函数不推...转载 2018-08-04 12:12:38 · 1039 阅读 · 0 评论 -
C\C++static关键字的用法总结
static关键字的作用主要起隐藏作用static关键字在C\C++中都可以修饰内置类型变量、函数static修饰内置类型变量为静态变量:static修饰的内置类型变量分为静态全局变量和静态局部变量,静态变量内存分配在 .data段,生成的符号为local类型的符号,在链接阶段进行符号解析时不做处理。静态变量只初始化一次,未初始化的静态变量会默认初始化为0。静态全局变量只在本文件可见,...原创 2018-08-02 00:54:59 · 10820 阅读 · 0 评论 -
const关键字作用
const关键字的作用可以分为以下几类:const与普通内置类型结合、自定义类型结合const与指针/引用的结合const与函数参数的结合const与函数返回值的结合const修饰类的成员函数const和内置类型、自定义类型的结合const可以和char、int、double、float、long、long long相结合,也可以和自定义类型class、struct相结合...原创 2018-08-02 10:32:46 · 716 阅读 · 0 评论 -
浅谈malloc和new及他们的区别
malloc()函数malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。void *malloc(...转载 2018-08-03 01:09:35 · 15167 阅读 · 2 评论 -
递归法的应用:求解斐波那契数列和数字的组合问题
递归:是指函数、过程、子程序在运行过程中直接或间接调用自身而产生的重入现象。采用递归编写程序能是程序变的见解和清晰。递归的用法一般为:定义是递归的:有许多数学公式、树、数列等的定义是递归的。数据结构是递归的:单链表就是一种递归的数据结构。问题的求解方法是递归的:有些问题的求解方法是递归的,典型的有Hanoi塔问题求解。但递归也有缺点,该算法解题的运算效率低,在递归调用过程中系统为...原创 2018-10-23 10:41:30 · 854 阅读 · 0 评论 -
递归解决背包问题
问题描述:有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物品的方案,使得选中物品的总重量不超过指定的限制重量,但选中的物品总价值最大。揭解法描述:采用递归寻找物品的寻找方案。设前面已有多种选择方案,并保留其中总价值最大的方案与一个数组option[]中,该方案的总价值存于变量maxval中,当前正在考虑新方案,其物品选择情况存于数组cop[]中。假设当前方案已经考虑了前i-1件物品,...原创 2018-10-29 11:50:32 · 1614 阅读 · 0 评论 -
C语言中栈和堆的区别
参考他人的博客,一些地方进行了修改,方便大家理解关于栈和堆简单可以理解为:heap(堆):是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack(栈):是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 :栈区(stack):由编译器自动分配释放...转载 2018-05-31 12:27:48 · 1450 阅读 · 0 评论 -
指针数组、数组指针、指针的指针及函数指针详解与用法
先来介绍一下指针: 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。是类型就有大小且都是4字节大小,里边只是存储了一个变量的地址而已。大小为4字节是因为寻址空间为(32位)0x00000000~~0xffffffff,最大只需要4字节,所以就设定指针类型大小为四字节不管什么类型的指针,char * 、int * 、int (*)[] 、string * 、...原创 2018-05-29 22:34:07 · 2609 阅读 · 0 评论 -
sizeof和strlen的区别及使用详解
首先我们来看一下sizeof和strlen的区别:sizeof操作符的结果类型为size_t(The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a val...原创 2018-05-29 18:52:43 · 72862 阅读 · 17 评论 -
c语言的简单排序:选择排序和冒泡排序及他们的优化
排序的算法多种多样,在c语言阶段接触较多的是冒泡和选择,下面就给出两种排序的实现。(1)、冒泡排序:# includevoid main(){ int arr[]={11,88,66,22,77,55,44,99,33}; int len=sizeof(arr)/sizeof(arr[0]); for(int i=0;i { for(int j=0;j原创 2018-01-23 10:13:44 · 474 阅读 · 0 评论 -
二分查找的一般实现
二分查找也叫折半查找,即每次查找都折半,使查找的范围每次减半,可使查找的效率大大提高。具体的实现如下:# includevoid main(){ int arr[]={11,22,33,44,55,66,77,88,99}; int m,len=sizeof(arr)/sizeof(arr[0]); printf("请输入要查找的数:\n"); scanf("%d"原创 2018-01-24 23:16:10 · 137 阅读 · 0 评论 -
用数组来解决看似很复杂的礼炮问题
此次的问题为:有三门大炮A、B、C同是开炮,A每隔五秒开一发,B每隔六秒开一发,C每隔七秒开一发,每门炮有21发炮弹。现有一观众在现场,问他一共能听到几声炮响。面对这道题我没一般想到用三个数组来保存每门炮响的时刻,然后去除重复响的次数最终剩下的就为听到的次数。现提供一种思路,只用一个数组且只遍历一次就将结果得出。代码为:# includevoid main(){ int原创 2018-02-04 16:40:27 · 562 阅读 · 0 评论 -
筛选法求素数
求素数的方法很多,今天就来写一种老师基本不会讲的筛选法求100以内的素数(可任意改变想要求取的范围)。筛选法具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是和数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一原创 2018-02-04 16:55:00 · 370 阅读 · 0 评论 -
C语言实现float类型到int类型的转化(位运算基础知识)
/* 在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。 ******************** 操作符 * 作用 ******************** & * 位与 1 & 1 = 1; 1 &a...原创 2018-03-10 22:46:36 · 5570 阅读 · 2 评论 -
可变参函数的基础知识
在以前的学习中我们自定义函数时都是指定参数的个数的,然而在C语言中有的函数的参数个数是可变的,就如在stdio.h的文件中的printf函数和scanf函数的参数就是可变的。我们进入底层可以看到的原型为:int printf(const char *format,...);它的参数中就有固定的参数format部分和可变参数部分(用“...”表示)。而另外我们经常用到的scanf函数的原型...原创 2018-03-13 15:38:38 · 248 阅读 · 0 评论 -
从内存对齐来解决结构体的大小问题
今天我们来讨论一下结构的大小:关于结构的大小我们先来做两个练习。struct stu1{ char ch1; int i; char ch2;};struct stu2{ char ch1; char ch2; int i;}; 就这两个简单的练习,就能看出结构体大小似乎并不像我们所想象的那样,那么在计算结构体大小是不是有什么规律呢?在解决这个问题时我们先...原创 2018-03-20 14:18:33 · 379 阅读 · 0 评论 -
strcpy及memcpy的内存重叠处理
strcpy和memcpy同是一个类型的函数,但实质上却是不同的,他们的原型分别为: char *strcpy(char *dest, const char *src);void *memcpy(void *dest, const void *src, size_t count);当我们使用这两个函数时都会出现同样一个问题,内存重叠。那么我们就来分析一下内存重叠是如何产的。现在假设有char *d...原创 2018-03-23 08:31:31 · 1607 阅读 · 1 评论 -
动态内存分配
C语言中内存分配方式<1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.<2>在栈上创建 在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。通常将栈称作函数调...原创 2018-03-28 21:48:58 · 145 阅读 · 0 评论 -
C语言趣味编程 -- 魔术师手中的牌和圆圈最后剩下的人
问题:魔术师手中有A—K的黑桃牌13张,每次不看牌,数数:1翻过来刚好为A;1、2翻过来刚好为2;1、2、3翻过来刚好为3(不翻的牌放在手中这迭牌的最下面,翻开的牌翻开放在一侧);……;1、……、13刚好为K。最后放在一旁的牌的顺序为1、2、3、4、5、……、J、Q、K。问:原先魔术师手中的牌的循序是怎样的? 解决这个问题我们通过一个图来进行解释: 这里我们能够看到上面图中所表示的意思。...原创 2018-05-18 17:35:40 · 862 阅读 · 0 评论 -
递归法的应用:求解汉诺塔问题
题目描述:汉诺塔问题是一个经典的问题,其来源据说在19世纪末欧洲的商店中出售一种智力玩具,在一块铜板上有三根杆,最左边的杆自上而下、由小到大顺序串着64个圆盘构成的塔,游戏的目的是将左边A杆上的圆盘借助最右边的C杆,全部移动到中间的B杆上,条件是一次仅能移动一个盘,且不允许大盘放在小盘上面,问最少需要移动多少次。解法描述:我们可知限制条件为:一次只能移动一个盘,且不允许大盘放在小盘上面。...原创 2018-10-24 18:35:10 · 2052 阅读 · 0 评论