![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言基础
Lin_SIT
存在即合理
展开
-
递归——hanoi塔问题
hanoi塔问题——C语言——源程序分析//递归 hanoi塔问题#include<stdio.h>#include<stdlib.h>int main(){ int n;//n个盘子 printf("请输入盘子数:"); scanf("%d",&n); int hanoi(int n,char A,char B,char C); hanoi...原创 2019-03-25 20:29:57 · 446 阅读 · 1 评论 -
数据指针的关系运算、判别运算、下标运算
数据指针的关系运算两个指针做<、>、<=、>= 关系运算的前提,与两个指针做减法的前提类似。结果为0或1.含义是两个指针哪个在内存的前面、哪个在后。数据指针的判别运算两个指针做==或!=运算,含义是它们所指的数据是否为同一个。[ ] 运算(下表运算)表达式1[表达式2]与(*(表达式1)+(表达式2))是完全等价的。注意:C/C++ 没有指定下标越界访问的错...原创 2019-04-20 17:13:49 · 330 阅读 · 0 评论 -
字节与位
一个字节为8位。字节含义:字节是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。数据存储是以“字节”(Byte)为单位,数据传输是以大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。位(即比特)含义:比特是计算机专业...原创 2019-04-17 19:39:53 · 688 阅读 · 0 评论 -
位运算符
位运算符(对二进制位进行操作)1、按位取反—— “ ~ ”(是位运算符中唯一的一元运算符)2、按位与——“ &” 当两者相应的位皆为1时运算结果对应位上的值为1,否则为03、按位 异或——“^”当两个操作数相应的位一个为0,一个为1时,运算结果对应的位才为1,否则为0.4、按位或——“ | ”相应的为皆为0时结果对应位才为0,否则为1.5、左移——“<&l...原创 2019-04-17 20:02:09 · 116 阅读 · 0 评论 -
指向虚无的指针
void类型的指针这种指针不指向任何类型的内存对象,只具有一个值——地址。作用是传递、保存这个值。只可以参加赋值运算(作为函数的参数)和类型转换运算,除此之外,void * 类型的指针不可以进行其他运算。优点:无论什么类型的指针赋给void 都不用类型转换。*什么情况会用到?1、再写函数定义时,不清楚函数调用者会提供什么类型的指针,这时要把对应的形参声明为"void * "类型;2...原创 2019-04-22 18:21:54 · 164 阅读 · 0 评论 -
变量名字含义
变量的名字含义:1、作为右值,就表示值2、作为左值,表示这个变量所占据的内存。double d=3.0;//这是一个赋值表达式,表达确切含义是“取出变量 ‘d’的值与常量‘5.0’的值相加,然后把结果放到变量‘d’所在的内存中去”...原创 2019-04-18 17:47:42 · 1306 阅读 · 0 评论 -
什么是指针?
指针(pointer)是一类数据类型的统称计算机的内存由连续的字节(byte)构成。这些连续的字节同样被连续地编上了号码以相互区别,这个号码就是所谓的地址(address)指针这种类型的数据专门用来存储和表示内存单元的编号,以实现通过地址得以完成的运算指针是派生类数据类型同数组、结构体、共用体等一样,指针也是一种派生数据类型(指针是一种借助其他数据类型构造出来的数据类型)注...原创 2019-04-18 18:15:05 · 1435 阅读 · 0 评论 -
指向数据对象的指针
什么是数据对象?(1)是内存中一段定长的、以Byte为基本单位的连续区域(2)这段内存区域中的内容表示具有某种类型的一个数据注:数据对象的类型不一定是简单数据类型(int,long,double等),也可以是派生类型,比如数组,甚至指针等。当说到某个指针指向”i“时,其确切含义是指向”i“所占据内存的整体。eg.指向Int类型数据的确切含义是指向一块大小为 sizeof(int ) ...原创 2019-04-18 19:50:24 · 697 阅读 · 0 评论 -
指针的加减法
指针的加减法指针的加法需要调整,调整的权重为sizeof(指针去掉一个*)int *p;p++;加sizeof(int)short *p;p++;加sizeof(short)double *p;p++;加sizeof(double)int *p=(int *)2000;printf("%d\n",p+2); //2008printf("%d\n",(shor...原创 2019-04-20 15:41:31 · 2017 阅读 · 0 评论 -
函数参数传递的三种方式
C语言中函数参数传递的三种方式(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。(2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的地址,因为对指针所指地址的内容的改变能反映到函数外,也就是能改变函数外的变量的值。(3)传引用,实际是通过指针来实现的,能达到使用的效果如传址...转载 2019-05-15 20:28:58 · 10674 阅读 · 1 评论 -
编译器
Eclipe1、电脑上搭建环境JDK2、配环境变量3、下载应用程序(www.eclipse.org)Intellij IDEA1、安装(www.jetbrains.com)2、ultimate 旗舰版(专业)3、安装4、安装完毕后,注意选64—bit,候选Run Intellij IDEA(目的:运行时提供一个向导)5、破解Intellij IDEA注册码idea.lanyus...原创 2019-09-14 17:01:53 · 145 阅读 · 0 评论 -
数组名做实参——函数调用
函数调用函数调用时使用函数名做函数实参,对应的形参类型:数组元素的类型[ ]除了在函数原型中使用外,也被用来说明形参的类型。eg.如果使用bjs做实参,那么对应的实参的类型是 int[ ];不可以只有数组名这一个实参由于数组名的值没有任何关于数组元素个数的信息,所以在使用数组名作为实参时, 通常还需要另外一个实参,就是这个数组元素的个数例题:本题的主要目的是演示如何通过函数...原创 2019-03-28 20:54:31 · 5548 阅读 · 1 评论 -
C语言中 数组名 与 ”&数组名” 的区别
(1) 测试代码 :#include<stdio.h>int main(){ int a[5] = {1,2,3,4,5}; printf("a = %p\n",a); // 数组名代表首地址 . 000000000064FE30 printf("&a = %p\n",&a); // "&...转载 2019-03-28 19:59:50 · 431 阅读 · 0 评论 -
递归——兔子繁殖问题
兔子繁殖问题:题目描述有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?输入描述:输入int型表示month输出描述:输出兔子总数int型基本思路:这是一个递归问题,从第一个月开始每个月兔子的数目为:1,1,2,3,5,8,13…,可以看出从第三个月开始,每个月兔子的数目是前两个月兔子的数目的...原创 2019-03-25 21:15:53 · 8373 阅读 · 0 评论 -
auto类别的局部变量
auto是局部变量的默认修饰如果局部变量前不加任何存储类别说明符,那么这个局部变量就是auto类别的。////auto类别局部变量的特点的演示#include<stdio.h>int main(void){ int i; for(i=0;i<3;i++) { auto int j=1; //这是个auto类别的局部变量,也可以写为int j=...原创 2019-03-26 18:57:15 · 1135 阅读 · 0 评论 -
数组名做实参——const关键字
前面我们已经知道数组名 a 的副本做形参可以改变数组 a 中元素的值<传递的是地址>const 修饰 不允许改变数组元素的值const 变量只可以在定义时被赋值,形参在本质上也是如此,因为形参在函数被调用时才拥有自己的存储空间。...原创 2019-03-30 17:02:13 · 744 阅读 · 0 评论 -
冒泡法排序——(数组做实参)
冒泡排序: 不断地把较大的数据移动到后面(比较),有写类似于水中的气泡向上冒的过程(越来越大)算法分析1、因为要对一个Int 类型的数组排序,所以解决问题的前提有条件是知道数组名及数组元素也就是说函数应该有两个参数。2、函数的功能是对数组排序,结束后并没有什么特定的值要返回给调用函数的地方,所以函数的类型应该是void类型(如果需要记录交换次数,也可以把交换次数作为一个int 返回)...原创 2019-03-30 20:22:17 · 1399 阅读 · 0 评论 -
二维数组
二维数组元素的赋初值赋初值一般形式:int s[2][4]={ {7,8,9,7}, {5,4,1,9}, }不提倡的形式:int s[2][3]={1,2,3,4,5,6};int s[ ][3]={1,2,3,4,5,6}; 错误的赋值形式:int s[2][ ]={1,2,3,4,5,6}; ...原创 2019-03-30 20:51:16 · 172 阅读 · 0 评论 -
static类别的局部变量
static类型的局部变量是在程序开始的时候就存在的,而且它的生命一直持续到程序的结束//include<stdio.h>int main(){ int i; for(i=0;i<3;i++) { static int j=1; // 这是个static类型的局部变量, // 它在程序的整...原创 2019-03-26 19:30:58 · 395 阅读 · 0 评论 -
inline 关键字
目的是提高函数的执yi行速度,这个关键字是给编译器看的。——通常这种优化处理的手段是把函数调用展开为函数定义中的语句,以节省函数调用的时间开销(建立实参和返回的开销)...原创 2019-03-26 20:14:04 · 219 阅读 · 0 评论 -
第五课——函数
函数声明函数声明也叫函数原型return表示从被调用函数返回到主函数继续执行,返回时可附带一个返回值。注:无参返回Int,表明main()可以给调用者返回一个整数值给操作系统,且调用main的地方不需要获得任何信息,通常约定,返回值为0意味着程序运行成功函数调用步骤: 1、计算出各个实参的值2、把实参值依次作为对应形参的初值3、执行被调用函数的函数体部分4、遇见retu...原创 2019-03-24 16:59:28 · 132 阅读 · 0 评论 -
数组定义的含义
数组定义的含义和定义变量一样,定义数组的目的是为某组数据申请内存空间并命名这块内存空间,以便在后面的代码中使用。数组名是什么?数组名是一块连续的存储空间数组的各个元素是依次连续地存储在这块内存中的。一维数组的引用因为数组的名字不是一个可以被赋值的左值表达式。把数组中的数据单个拿出来运算,叫做对数组元素的引用。...原创 2019-03-27 21:33:48 · 1183 阅读 · 0 评论 -
数组名
数组名的值到底是什么?作为右值表达式,数组确实有个值。但和基本类型变量不同的是,数组的值不是程序编写者通过代码赋予的,而是编译器在编译的时候给予的,不可以通过代码改变,而且这个值就是存储数组的内存单元的起始内存单元的编号,也就是一个地址。通常所说的数组名的值是数组的首地址eg.int bjs[4];假设数组的四个元素被储存在从1232H到1241H(16进制)这16个字节中,那么数组b...原创 2019-03-28 19:51:34 · 441 阅读 · 0 评论 -
输出与返回值的区别
返回值可以拿走的输出只能看见,拿不走原创 2019-09-26 16:16:45 · 2632 阅读 · 1 评论