Linux C编程 学习笔记2

我问自己:我真正的掌握递归了吗?什么是递归?为什么会有递归这样的构想?他适合解决哪些问题?在使用递归时需要注意哪些东西?我用递归解决过问题吗?

递归是什么,是递推和回归。输入一个初始值,一方面按照给定的算法慢慢深入,等到符合终止条件了,就层层回溯,返回结果。

例如书上的

float fac(int n)
{
    float f;
    if(n<0)
    {
        printf("n<0,data error!");
        return -1;
    }
    else if(n==0||n==1)
        f=1;
    else
        f=n*fac(n-1);
    return f;
}

在这个递归算法中,实参传入一个初始值,给定算法是f=n*fac(n-1),终止条件就是if(n==0||n==1).麻雀虽小,五脏俱全。

变量的存储类型:变量根据存储类型可以分为静态存储变量和动态存储变量,或称为静态变量和动态变量。动态变量是在程序运行中根据需要动态分配内存的变量,静态变量是指在程序运行期间分配固定内存的变量。

动态变量主要有:函数的形参、函数内定义非static变量(在函数结束后系统会回收动态分配的内存);

静态变量主要有:函数内定义的static变量、全局变量。(系统不会回收分配给他们的空间,而是继续使用上次分配的空间,所以值得以保存)

extern声明全局变量,从声明处到文件结束都有效。可用于由多个源文件构成的规模较大的程序。

 

实践了书上的例子。

-----------------------------------------------------------------

数组部分:

在学习前先在脑中回顾一下数组的相关知识。一位数组,二维数组,怎么动态申请内存,数组下标的计算相关问题等。

一些基本的点:字符在存储到字符数组时,会在后面补上\0符号表示字符的结束,wohenshuai有10个字符,但系统自动为这10个字符分配11位内存单元,补上一个\0

-----------------------------------------------------------------

指针部分:

指针当初学的稀烂,希望趁这个机会好好夯实一下指针的基础

基础知识:对于程序中的每一个变量,在编译程序时都要分配一块内存用于存储该变量的值

C语言的指针是专门用来存放内存地址的变量,指针也是一个变量,遵循变量所需要的遵循的原则。指针的赋值就像实参与形参的传递,每一个类型的指针只能指向同类型的变量,例如:char p只能被char a=‘A’指向。

如以下形式:

int *p;

int i=*p;

将一个尚未被赋值的空指针指向一个同类型的变量,根据以往的经验来说这样是很危险的。尝试了一下

编译出现warning:空指针警告

值得一提的是在中断中使用VI编辑时我会习惯性地使用ctrl+s来保存文件,这在linux命令行中是暂停终端,需要ctrl+q:退出这种状态,让终端继续运行。

常用地两个运算符:

&取地址,*取地址所在的内存单元的值。

在写指针例题时重复工作多,找了一下vi编辑器的常用命令:

  • 复制粘贴: 按v进入视图模式 d剪切或者y复制 然后p粘贴
  • 插入命令: i
  • 查找字符串命令: / ,查找多个匹配结果,可以n键向下查找,N向上查找。
  • x 删除光标所在的单个字符
  • dd 删除一整行(相当于剪切),p 粘贴
  • yy 复制单行
  • J 删除当前行的换行
  • u 撤销
  • w 保存不退出
  • q 不保存退出
  • ! 强制性操作
  • 命令行模式下 :set nu显示行数,:set nonu 不显示行数
  • 创建多个窗口,vim打开一个文件后,在命令行模式下执行 "sp 文件路径" 命令,再打开一个窗口,sp表示水平切分窗口,vs表示垂直切分窗口。
  • 切换窗口:ctrl + WW

程序及结果:

 

 

OK!今天先到这,明天早上还有课,fight!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值