因为本身就是自己自学时零碎记录的觉得自己容易遗忘的部分,所以可能显得有些杂乱,发出来和大家一起分享,也记录一下自己自学路的开端。

第二章:

1.当赋值发生在变量定义的时候称为初始化。

2.有运算符的式子叫做表达式。

3.会变的是变量,不会变的是常量。

4.const int change=100 ,int前加const,表示这个变量不能被修改。

5.两个整数的运算结果只能是整数,要用浮点数(10.0)。

6.double(双精度浮点数),float(单精度浮点数),表示浮点数。输入时scanf里是%lf,输出时%f。

7.表达式里有算子和运算符。

8.赋值运算自右向左结合。(a=b=6)。

9.“++“,“--”,运算符效果是使变量的值+1或-1,但a++的值是a+1以前的值,++a的值是a+1以后的值,效果都是让a+1.

10.当两个值的关系符合关系运算符的预期时,结果为1,不符合结果为0。

11.  1)算数运算>关系运算>条件运算>赋值运算(条件运算符:表达式1?表达式2:表达式3,如果1为真,表达式2的值为整个条件表达式的值,否则表达式3是表达式的值。)

2)单目运算符优先级高于双目运算符 。

3)!>&&>||。

13.

14.

15.bool类型输出只能显示为1,0,没法输出true,false。

16.

17.a=3+4,5+6  ,a的值为前面那个,因为逗号预算符优先级最低,前面的值算出来优先赋值给a。a=(3+4,5+6),值为后面那个,因为逗号组合关系为自左向右,而括号把逗号运算符的优先级提到最高。。

18.

条件运算符优先级高于赋值运算符但是低于其他运算符。

19.如果没有大括号else自动匹配最近的那个if,缩进格式不能暗示else的匹配。

20.

  1. case后的值只能是整数常量。
  2. case会跳转到type那个值的位置开始执行程序,直到遇到break
  3. default部分除非遇到break,不然都会执行。

21.  #include<stdlib.h>(  rand()  )    #include<time.h>(  time(0)  ).

Srand((unsigned)time(null))通过时间来生成不同的随机数种子,以达到生成随机数的目的,同样的随机数种子会生成同样的随机数。

22.break,continue

23.goto out;       (用于多重循环中直接跳出循环,会跳到goto后面那个值处。)

Out:

24.  1)定义数组时数组类型实际为数组中元素的类型。

2)C99之前数组的大小(元素的数量)只能是常数,之后可以用变量来定义数组的大小。(不建议用变量定义。)

3)一旦创建,数组大小不可以改变。

4)最大的下标为数组个数减1。

25.return会停止函数的运行并返回一个值或不返回。

26.函数声明的参数名称可以不写,但通常都会和函数定义中的一样。

27.c语言在调用参数时永远只能传值给函数。

28.变量生存期:参变量出现到消亡的时间   作用域:可以访问到变量的范围(变量起作用的范围)。 变量的生存期和作用域就是在函数大括号内部。

29.本地变量定义在块中(大括号里),离开块,变量就消失了。块外面定义的变量块里面仍然有效,块里面定义了和外面同名的变量则掩盖了外面的,不能在一个块内定义同名的变量,本地变量不会被默认初始化。

30.sizeof()给出某个类型或变量占据的字节数。常用法:用于计算数组的大小sizeof(a[n])/sizeof(a[0]).

31&可以得到变量的地址,地址的大小是否与int类型相等取决于编译器(32位还是64位),想要输出地址要用%p。

32.数组的地址&a=a=a[0],a[1]比a[0]大4,相邻的数组之间都差4.

33.  1)指针变量的值是别的变量的地址。

2)int*p,q,   此时p是指针变量,q只是int类型的变量。 int*p=&i。

3)作为参数时  例:void f(int*p)  f(&i)

4)*p作为一个整数,p是值的地址,改变*p的值,会改掉地址p所指向的变量的值。

34.数组作为函数参数时:

1)在函数定义中数组为a[],中间为空

2)此时函数中数组实际上是指针(数组的地址),因此在函数中不能通过sizeof()的方式得到函数的大小。

3)int sum(int*ar, int n)=int sum(int ar[],int)作为函数参数时是等价的。

3)int a[10]; int*p=a  对于数组取地址,不需要&

4)但是数组的单元(每个元素)表达的是变量,在取地址时仍需&。

5)&a==a==&a[0],数组a的地址等于a[0]的地址

6)[ ]运算符可以对数组做,也可以对指针做

int *p=&min;  //min 是普通变量

*p=min;   p[0]=min;  //将变量当作数组取出该地址上的第一个值

7)*运算符可以对指针做,也可以对数组做。

int a[10];

*a=a[0];

8)数组变量是const的指针所以不能直接被赋值

int a[] = int * const a;

35.字符类型

1)输入char c;

scanf(“%c”,&c);(输入1)

Scanf(“%d”,&c);(输入49)  两种情况相等,因为1的ascll码等于49

2)49==‘1’

3)scanf(“%d %c”,&a,&c),  当同时输入整数类型和字符时,最好加空格,因为整数类型会一直读到不是整数类型为止。

36.逃逸字符

37.字符数组,字符串 (结尾有一个0或“/0”,因此字符串占据空间的大小比它的字面量大1,但是字符串的大小是不包括那个0的。)

1)c语言的字符串是以字符数组的形态存在的

2)不能用运算符对字符串做运算

3)通过数组的方式可以遍历字符串

4)两个相邻的字符串常量会被自动连接起来

5)字符串字面量可以用来初始化字符数组

38.字符串输入输出

1)%s,输入时读到空格、tab或回车为止,不安全,超出界限会崩溃

2)%7s,中间加入数字,数字大小为字符串可读的最大长度,安全

39.char*string

Scanf(“%s”,string),错误的,指针变量并没有指向一个实际地址,不能当作字符串来看

40.     char string[]=””,字符串长度为1.             Char string[100]=””,char[0]的值为“/0”

41.字符串数组   #include<string.h>

1)strlen()  返回字符串长度,不包括0

2)strcmp(s1,s2),比较函数大小,相等返回0,否则返回它们不相等的字符,前面减后面的大小。   Strncmp()只比较前n个长度

3)strcpy(s1,s2),把s2表示的字符串,拷贝到s1所指向的空间(地址),需要足够的空间    安全版本:strncpy() ,n表示最长能够拷贝的长度

4)srcat(s1,s2),把s2表示的字符串拷贝到s1后面连接成一个字符串,需要s1有足够的空间   安全版本:strncat(),n表示最长能够拷贝的长度

5)strchr(s1,c)从左边开始寻找c在s1中第一次出现的位置

Strrchr(),从右边开始找       没找到返回null,找到了返回字符c的地址

翁恺老师c语言课程笔记相关推荐

  1. 翁恺老师C语言学习笔记(十)指针_指针变量就是记录地址的变量

    指针变量就是记录地址的变量 scanf函数 · 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量 · scanf("%d", &i) · ...

  2. 翁恺老师C语言学习笔记(十)指针_运算符取得变量的地址

    指针(一) 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值.由于通过地址能找到所需的变量单元,可以说,地址指 ...

  3. 翁恺老师C语言学习笔记(十一)字符串_字符串常量

    字符串常量 char* s = "Hello,world!" 我们先看一段代码 #include<stdio.h>int main(void) {char *s = & ...

  4. 翁恺老师C语言学习笔记(十一)字符串

    字符数组 如果我们定义了这样的一个字符数组 char word[] = {'H','e','l','l','o','!'}; word[0] H word[1] e word[2] l word[3] ...

  5. 翁恺老师C语言学习笔记(十)指针_指针与数组

    传入函数的数组成了什么? · 当我们向一段函数传入数组变量,参数接收到的是值,如果我们传入指针时,参数接收到的是也是值(一个地址): · 如果传入函数的是一个普通变量,它接收到的是一个值 · 如果传入 ...

  6. 翁恺老师C语言学习笔记(十)指针_指针的使用

    指针的应用场景一 · 交换两个变量的值 void swap(int *pa, int *pb);//定义指针*pa和*pb int main(void) {int a = 5; int b = 6;s ...

  7. 翁恺老师C语言学习笔记(九)数组的运算

    · 在一组给定的数据中,如何找出某个数据是否存在? 先看一段代码 #include<stdio.h> /* 找出key在数组a中的位置 @param key 要寻找的数字 @param a ...

  8. 翁恺老师C语言学习笔记(七)函数

    题目:求出1-10.20-30.35-45的三个和 #include<stdio.h>int main() {int i;int sum;for(i=1,sum=0;i<10;i++ ...

  9. 翁恺老师C语言学习笔记(十)指针_指针运算

    我们先看一段代码 #include <stdio.h>int main(void) {char ac[] = {0,1,2,3,4,5,6,7,8,9,};char *p = ac;pri ...

最新文章

  1. 版本控制(译文)-5 (连载)
  2. 使用xshell上传本地文件到服务器
  3. 水平+垂直布局-css (借鉴)
  4. linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...
  5. mysql数据库(10):数据 备份
  6. java面向对象编程的三大基本特性--封装,继承,多态
  7. Linux输入子系统:事件的编码 -- event-codes.txt
  8. 将Linux可执行文件变成可执行命令
  9. 原生JS实现canvas移动端电子签名板/画板
  10. CRM高端制造业应用案例分析
  11. java web atm机_Java项目实现模拟ATM机
  12. RK 7.1 OTA升级提示Not enough free space on /cache to apply patches
  13. 均衡负载集群(LBC)-1
  14. wargame v2.1 Web Wrtteup By Assassin
  15. 玩于鼓掌之中的小老虎机——Tiny Tiger Machine
  16. 中国式危机公关9加1策略(第七章 道歉先行策略)
  17. Vue.js(7):条件渲染
  18. 5个步骤,教你学会商业数据分析
  19. 交换机的相关配置---设置终端登录密码和恢复出厂设置的实验操作
  20. python中reduce函数的运用_python 中 reduce 函数的使用

热门文章

  1. 一键上传文档至Google文档
  2. 公司app上架正规要求需要办理icp许可证
  3. OTP单片机AD单片机FLASH开发之义隆应广九齐仿真器
  4. java 判断条件_Java初学者:条件判断及其语句
  5. 两个不相邻的分区怎么合并,win10不是相邻分区合并分区
  6. el-tree 关键字搜索
  7. VirtualBox下Android-x86安装与基础配置
  8. 当当年中庆,百万自营图书大放价,又有羊毛可以薅了
  9. Faces Verbatim 组件
  10. uniapp 安卓 长按app 快捷方式 shortcut