c程序设计复习

1.若未对变量进行初始化,则其默认初始值为该3地址原来所存储的值

2.scanf函数要加&,例scanf("%d",&a);

3.出现在scanf引号内的东西是在输入时一定要输入的东西,而不是要你看到东西,所以输入的内容其格式必须与引号内保持一致

4.常量可以直接写,也可以用const定义,格式:const 类型 常量名 值(const int amount 5)。在定义常量时经常使用大写,以便于区分

5.注意区分C语言中的整形和浮点型。10和10.0就是不同的,两个数都除以3,其结果不一样,整数运算结果只能时整形。在表达式中只要出现过一次浮点型,即使其他为整形,其运算结果也仍然为浮点型

6.区分运算符和算子

    a = b + 7 (a,b,7都为算子。=,+都为运算符)

7.表达式运算的优先级别

一般式子都是自左向右,而对于单目运算符+-和赋值运算符=则时自左向右

(result = a = b = c + 5,即先计算c+5并赋值给b,再赋值给a,最后赋值给result)

8.关系运算符的结果

当两个值的关系符合关系运算符的预期时,关系运算的结果为整数1,否则为整数0

例:printf("%d\n", 5==3); 结果为0

9. 所有的关系运算符的优先级比算术运算的低,但是比赋值运算的高

    例如:7>=3+ 4 (3+4先计算,再与7比较,结果为1)
    int r = a>0;

判断是否相等的==和!=的优先级比其他的低,而连续的关系运算是从左到右进行的.

10.在程序调试出现错误时,除了可以使用debug调试外,还可以在必要的地方插入print语句,然后运行看输出结果在哪里出现问题

11.一句话结束的后面一定要加上分号

12.for循环三部分分别为循环初始条件,循环结束条件,循环每轮要做的动作

13.把某一个变量的定义放到for循环内定义,只允许在C99中使用

14.任一for循环可以改造成while循环,for中的条件可以省略,但是分号不可以

15.循环的选择

    如果有固定次数,用for
    如果必须执行一次,用do_ while
    其他情况用while

16.优先级的比较

 17.短路:逻辑运算是自左向右进行的,如果左边的结果已经能够决定结果了,就不会做右边的计    算

18.条件运算符(?:)的优先级高于赋值运算符,但是低于其他运算符

19.断点处的句子表示该句子还没有执行

20.else总是和最近的if匹配,即使有缩进也不能改变。所以好的编程习惯总是在if,else后面加括号

21.switch-case语句:不要忘记break,可以用default来表示结束的case。同时要注意switch后面所跟的type类型必须为整数型

22.用rand()生产随机数,需要在程序开头添加如下代码:

   #include <stdl ib. h>
   #include <time. h>

23.有一个比break更厉害的——goto,但是goto后面要加自己定义的东西,然后运行到此时,就会      跳到对应的相同代码处在(多层循环处可用,其他地方尽量少用)

24.函数的定义

25.void类型的函数,可以没有return语句

26.C的编译器是自上而下分析代码的,故若自定义函数写在main函数下方,则需要在main函数之前写上该函数的函数声明(即函数头加分号,也叫函数原型,该部分并不是函数)

27.每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。过去,对于函数参数表中的参数,叫做“形式参数”,调用函数时给的值,叫做“实际参数”。

28.本地变量

函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数的这次运行所独有的,称作本地变量
定义在函数内部的变量就是本地变量
参数也是本地变量

29.生存期和作用域

生存期:什么时候这个变量开始出现了,到什么时候它消亡了
作用域:在(代码的)什么范围内可以访问这个变量(这个变量可以起作用)。对于本地变量,这两个问题的答案是统一的: 大括号内--块

30.调用函数时的逗号和逗号运算符怎么区分?
    调用函数时的圆括号里的逗号是标点符号,不是运算符
    f(a,b)表示函数中有两个参数
    f((a,b))表示该函数中仅有一个参数

31.C语言不允许函数的嵌套定义,可以在一个函数中写另一个函数的声明,但是不可以写两一个函数的定义

32.用该语句可以直接得到数组的单元个数

33.数组作为函数参数时,往往必须再用另一个参数来传入数组的大小
     不能在[]中给出数组的大小
     不能再利用sizeof来计算数组的元素个数!

      正确的方法

 34.运算符&

    scanf(“%d", &i);里的&是运算符,作用是获得变量的地址,它的操作数必须是变量

    在print中,用%p来获取地址,不是%d,因为所取地址是4字节还是8字节有电脑定。

    在32位和64位的电脑中,所取得的地址大小是多少位,和int是否相等是不一定的。取决于编译     器

   &不能对没有地址的东西取地址(例如:&(i++)就不是地址)

35.C语言中的变量在内存中保存与堆栈中,堆栈自定向下分配内存。先写的变量内存更高,后写的变量内存更低。

36.在数组中,用printf输出a、a[0]、&a,三者输出的结果相同,都为数组a的首地址

37.指针*

指针就是保存地址的变量

  • 例如:int* p = &i;(指针p指向i,即p中存放着变量i的地址)

  • int* p,q;
  • int  *p,q
  • 这两句话是一样的,*既可以靠近p也可以远离p。都表示指针类型的p和int型的q

38.作为参数的指针

   

39.访问那个地址上的变量*

   *是一个单目运算符,用来访问指针的值所表示的地址上的变量,可以做右值也可以做左值。

40.在函数的参数中所传的参数a[],实际上等价于*a,所传递的就是a的地址。参数表中的数组实际上是指针。

如下所示的四种函数即是等价的

41.数组变量是特殊的指针

数组不能被赋值,即若a和b都是数组,则不能用b = a把数组a赋值给数组b

42.逃逸字符

43.字符串

用指针方式定义字符串时,指针指向一个地址很小的地方,位于程序的代码段,该部分只允许读操作,故不可以对字符串进行修改。

而用数组定义的字符串,则会给字符串的每个字符都赋予不同的地址,所以字符出串每个地址上的内容都是可以修改的。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值