翁恺老师c语言课程笔记
因为本身就是自己自学时零碎记录的觉得自己容易遗忘的部分,所以可能显得有些杂乱,发出来和大家一起分享,也记录一下自己自学路的开端。
第二章:
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.
- case后的值只能是整数常量。
- case会跳转到type那个值的位置开始执行程序,直到遇到break
- 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语言课程笔记相关推荐
- 翁恺老师C语言学习笔记(十)指针_指针变量就是记录地址的变量
指针变量就是记录地址的变量 scanf函数 · 如果能够将取得的变量的地址传递给一个函数,能否通过这个地址在那个函数内访问这个变量 · scanf("%d", &i) · ...
- 翁恺老师C语言学习笔记(十)指针_运算符取得变量的地址
指针(一) 在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值.由于通过地址能找到所需的变量单元,可以说,地址指 ...
- 翁恺老师C语言学习笔记(十一)字符串_字符串常量
字符串常量 char* s = "Hello,world!" 我们先看一段代码 #include<stdio.h>int main(void) {char *s = & ...
- 翁恺老师C语言学习笔记(十一)字符串
字符数组 如果我们定义了这样的一个字符数组 char word[] = {'H','e','l','l','o','!'}; word[0] H word[1] e word[2] l word[3] ...
- 翁恺老师C语言学习笔记(十)指针_指针与数组
传入函数的数组成了什么? · 当我们向一段函数传入数组变量,参数接收到的是值,如果我们传入指针时,参数接收到的是也是值(一个地址): · 如果传入函数的是一个普通变量,它接收到的是一个值 · 如果传入 ...
- 翁恺老师C语言学习笔记(十)指针_指针的使用
指针的应用场景一 · 交换两个变量的值 void swap(int *pa, int *pb);//定义指针*pa和*pb int main(void) {int a = 5; int b = 6;s ...
- 翁恺老师C语言学习笔记(九)数组的运算
· 在一组给定的数据中,如何找出某个数据是否存在? 先看一段代码 #include<stdio.h> /* 找出key在数组a中的位置 @param key 要寻找的数字 @param a ...
- 翁恺老师C语言学习笔记(七)函数
题目:求出1-10.20-30.35-45的三个和 #include<stdio.h>int main() {int i;int sum;for(i=1,sum=0;i<10;i++ ...
- 翁恺老师C语言学习笔记(十)指针_指针运算
我们先看一段代码 #include <stdio.h>int main(void) {char ac[] = {0,1,2,3,4,5,6,7,8,9,};char *p = ac;pri ...
最新文章
- 版本控制(译文)-5 (连载)
- 使用xshell上传本地文件到服务器
- 水平+垂直布局-css (借鉴)
- linux网卡有很多error,教你设置win7系统虚拟机安装linux提示network error的解决方法...
- mysql数据库(10):数据 备份
- java面向对象编程的三大基本特性--封装,继承,多态
- Linux输入子系统:事件的编码 -- event-codes.txt
- 将Linux可执行文件变成可执行命令
- 原生JS实现canvas移动端电子签名板/画板
- CRM高端制造业应用案例分析
- java web atm机_Java项目实现模拟ATM机
- RK 7.1 OTA升级提示Not enough free space on /cache to apply patches
- 均衡负载集群(LBC)-1
- wargame v2.1 Web Wrtteup By Assassin
- 玩于鼓掌之中的小老虎机——Tiny Tiger Machine
- 中国式危机公关9加1策略(第七章 道歉先行策略)
- Vue.js(7):条件渲染
- 5个步骤,教你学会商业数据分析
- 交换机的相关配置---设置终端登录密码和恢复出厂设置的实验操作
- python中reduce函数的运用_python 中 reduce 函数的使用