从头学习c(2)

1.static修饰方法:修饰局部变量。修饰全局变量。修饰函数

此时a是局部变量,当a离开大括号的时候就被销毁了,下次进来需要重新创建,因此打印出来都是222222

然而,当我们把a用static修饰之后,就变成了静态变量。即使除了大括号也不回被销毁,static修饰局部变量,本质上改变了局部变量的生命周期,改变了他的存储类型。局部变量一般存储在栈区,而堆区一般存放动态分配的变量,静态去存储着静态变量(static修饰的)。

static修饰全局变量

我们知道,全局变量可以再其他源文件中使用,因为全局变量具有外部链接属性,当static修饰全局变量之后全局变量从外部链接属性变成了内部链接属性,这个全局变量只能在自己的源文件(.c)中使用,而其他源文件不能使用,static修饰的函数和全局变量一样,不能在其他源文件中使用。

 2.指针初讲

有两个问题:1.内存是怎么编号的2.一个内存单元是多大的空间

我们有32根地址限,通电之后变成1、0,电信号转变成数字信息,即1和0组成的二进制序列,一个内存单元是一个字节,然后进行地址分配。

我们要注意,指针的大小是相同的,32位中,一个指针是4个字节。

3.结构体

结构体的存在可以使得c语言有能力描述复杂类型。

4.循环语句初解

 

 z

 在switch'中,一个case后面最好加上break,不然会继续往下面走。

我们要注意while中的break和continue的用法。break会会让while循环终止,而continue会跳过本次循环continue后面的代码。此代码会卡死。

 5.getchar()初解

getchar是c语言中较为重要的函数,下列代码的意思是:Getchar获取一个字符放到ch里面,如果读取到的字符不等于eof(说明没出错)(我们知道Getchar读取失败的时候会返回eof)putchar(ch)的意思是把ch里面的数字在读出来。

我们要注意,Getcharscanf不是从键盘上直接拿信息的,而是在缓冲区里面拿数据,此时scanf123456拿走放到了password里面,缓冲区里面还有个\n,getchar一进来发现里面有个\n,就直接拿走放到ch里面了,因此导致确认失败。所以必须要把\n拿走清理缓冲区。

 如果仅仅是简单的加入一个getchar()来清理缓冲区的话,最然可以正常确认123456这样的密码,仍然有些不妥,因为密码是123456 abcdef的话还是检测不出来。因为此时缓冲区的数据是123456 abcdef\n,而scanf只会拿走123456,而而getchar一次拿不完,因此要放多个getchar直到拿到\n。因此清理缓存最好使用while循环来清理。我通过getchar读到的数据如果不是\n,我就扔了,直至读到\n

 6.初识for语句和do while语句

第一个表达式初始化,第二个表达式判断,第三个表达式调整

 

 7.练习题

 1.打印从1到n的阶乘

2.计算1!+......+10!注意ret=1非常重要,如果没有这句话,在第二个for循环出来后ret会延用原来的值。

 3.二分查找法的讲解。从1,2,3,4,5,6,7,8,9,10中找到7这个数字。

原理:第一步,确定数组的左下标和右下标,left=0;rigrt= 9,mid=(0+9)/2=4,而7的下标是6,

第二步:mid小于6.所以右下标不变,左下标变成mid+1=5。此时mid=(5+9)/2=7,而7的下标是6

第三步:因为mid大于6,所以左下标不变,右下标位mid-1=6,此时mid= (5+6)/2=5,而7的下标是6

第四步:因为mid小于6,所以右下标不变,左下标+1=6,此时mid=(6+6)/2=6找到了要找的值

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值