C语言视频学习笔记

1、编写代码
2、编译:把C语言代码翻译成0和1
    工具:编译器
     指令:cc - c 文件名.c (可连续编译多个文件,文件名之间用空格隔开)
     编译成功,会生成一个.o的目标文件
3、链接:其实就是把我们的.o目标文件跟系统自带的函数库合并在一起,生成一个可执行文件
     指令:cc 文件名.o
4、运行:./a.out

用终端新建一个文本文档
一、touch 文件名.后缀  
二、open 文件名.后缀

关键字
1>全部都是小写
2>在开发工具或者智能文本编辑工具中会显示特殊颜色。
标识符
标识符就是在程序中自定义的一些符号和名称。
作用:用来区分一些事物。
命名规则
1>只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成
2>严格区分大小写
3>不能以数字开头
4>不可以使用关键字作为标识符
命名规范
1>尽量起一个有意义的名称
2>如果标识符有多个单词,尽量使用驼峰标识
注释
1>单行注释-----//
2>多行注释-----/*   */
3>注释可以间接检查代码
4>注释可以排错错误
5>单行注释可以嵌套单行注释、多行注释
6>多行注释可以嵌套单行注释
7>多行注释不能嵌套多行注释
数据
1>静态数据
静态数据是指一些永久性的数据,一般存储在硬盘中。静态数据一般是以文件的形式存储在硬盘上。
2>动态数据
动态数据是指在程序运行过程中,动态产生的临时数据,一般存储在内存中。计算机关闭后,这些临时数据就会被清除。
3>数据大小
不管是静态数据还是动态数据,都是0和1组成的。数据越大,包含的0和1就越多。1 Byte(字节) = 8 bit(比特位) 
字符常量(char)
将数字(0~9)、英文字母(a~z、A~Z)或者其他符号(+、-等)用单引号括起来,这样就是字符常量如'a'、'6'、'&'等。
注意:单引号只能括住1个字符,而且不能是中午字符
字符串常量
将一个或者多个字符用双引号括起来,这样构成的就是字符串常量。如"6"、"男"、"abcd"等 
定义变量时写类型就是为了方便电脑为变量合理分配存储空间。变量的第一次赋值叫变量的初始化
程序中只要有不确定的数据,就应该定义变量来保存。
输出
%d/%i (int)是一个格式符(占位符),只能输出整数
%f (float、doulbe)用来输出小数,默认是6位小数
%c (char)
内存中,相邻内存地址是连续的,以十六进制递增。

关系运算
条件成立就返回1,真
条件不成立就返回0,假
运算符优先级:<、<=、>、>=优先级相等,==、!=优先级相等且低于前者
关系运算符的结合为“从左往右”
关系运算符的优先级小于算术运算符

逻辑运算
逻辑与---&&
1>格式:“条件A && 条件B”
2>运算结果:条件A和条件B同时成立时才返回“1”,其余均返回“0”

逻辑或---||
1>格式:“条件A || 条件B”
2>使用:条件A和条件B只要有一个成立就返回“1”,其余均返回“0”

逻辑非---!条件(取反)
1>格式:!条件
2>使用:如果条件成立,就返回0,如果条件不成立,就返回1

三目运算符
1>格式:条件?数值1:数值2
2>使用:先判断条件是否成立,成立则返回数值1,不成立则返回数值2


算术运算
1.加法运算 +
除了能做加法运算,还能表示正号:+5
2.减法运算 -
除了能做减法运算,还能表示负号:-10
3.乘法运算*
注意符号,不是×,是*
4.除法运算/
注意符号,不是➗,也不是\,而是/
整数除以整数,结果还是整数,余数部分全部舍弃,不做四舍五入
5取余运算(模运算)%
%两边必须都是整数
%取余结果的正负性只跟%左边的数值有关
自动类型转换---小类型和大类型运算,自动转换为大类型
强制类型转换---(数据类型)(需转换的变量、数据 )
a++:----先用后算
++a:----先算后用
常量无法自增自减,右结合性
int i = 3;b = -i++;——等价于b=-(i++),先取出i的值3,输出b=-i(-3),然后i的值自加为4
sizeof(常量/变量)
---求常量/变量的字节长度(计算数据类型所占存储空间大小)

关系运算
在C语言中,条件成立为"真",条件不成立为”假”。作为判断条件时,任何非0值都为真,只有0才为假。表示逻辑运算结果时,数值1代表”真”,0代表“假”


流程控制
顺序结构:默认的流程结构,安装书写顺序执行每一条语句
选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码
循环结构:再给定条件成立的情况下,反复执行某一段代码




选择结构
1.if
1>结构
if (条件1)
{

}
else if (条件2)
{

}
else if (条件3)
{

}
else 
{

}

2>特点
同一时刻,只有一个花括号里面的代码会被执行

2.switch
1>结构
switch (数值)
{
    case 数值1:
    语句1;
    break;
    case 数值2:
    语句2;
    break;
      default:
    语句3;
    break;
}
2>特点
 ①默认情况下,只有一个case后面的代码会被执行
 ②如果一个case后面没有break,而且这个case成立,就会按顺序执行后面所有case中的语句,直到遇到break为止
 ③如果要在case后面定义一个新的变量,必须用花括号{}包住


if和switch之间的区别
1>if语句能完成的功能,switch并不一定能完成
2>在有些情况下,两者能够互换
3>switch语句能完成的功能,if语句都能完成

循环结构
1.while
1>特点:如果一开始条件不成立,永远不会执行循环体

2.do while
1>特点:不管条件是否成立,至少会执行一次循环

3.for
1>可以定义仅用于循环语句中的变量,循环结束后,自动释放内存,提高运行速度

4.选择
1>一般优先使用for循环
2>然后再考虑while
3>最后在考虑do while


break:
1.使用场合
1>switch语句:退出整个switch语句
2>循环结构:退出整个循环语句,(跳过循环体中下面尚未执行的语句,break上面部分的语句照常执行)
    *while
    *do while
    *for
2.注意点
只对最近的循环结构有效(多层嵌套时注意)

continue:
1.使用场合
  循环结构:结束当前这次的循环体,进入下一次循环体(跳过循环体中下面尚未执行的语句,continue上面部分的语句照常执行)
    *while
    *do while
    *for 
2.注意点
只对最近的循环结构有效(多层嵌套时注意)


定义函数的目的:将一个常用的功能封装起来,方便以后调用

函数定义

1>函数名:函数叫什么名字

2>函数体:函数是干啥的,里面包含了什么代码

3>格式

固定格式(很多语言的函数都是这么写的)

返回值类型 函数名(形式参数列表)

{

       函数体

}

定义函数的步骤

1>明确函数的作用,起一个有意义的函数名称

2>明确函数的参数和返回值

函数注意事项

2>死循环调用,自己调用自己

1.默认情况下,不允许有函数的名称一样

2.函数不能嵌套定义

3.函数不能重复定义,但是可以重复声明 (编译器执行默认由上至下执行,调用的函数体放到main函数后面系统会报错。这种情况下须将调用函数在main函数前面声明)

4.如果有函数的声明,没有函数的定义

1> 编译可以通过,因为编译器只会检测语法合不合理,并不会检测函数有没有定义

2> 链接报错,因为链接的时候会检测函数是否定义

函数补充说明

1.main 函数

 返回值:0,正常退出;1,异常退出。

2.printf函数

#include

返回值:字符串的长度

include的简单实用
1>作用:拷贝右边文件的所有内容到#include所在的位置
2>自定义的文件用"",系统自带的文件用<>
3>#include<stdio.h>的目的:拷贝printf函数的声明

如果函数只有调用,没有定义,编译器只会报警告。如果函数定义和调用都有,但是定义在调用之后且前面没有声明,编译器将会报错。

多文件操作:
链接:把项目中所有相关联的.o目标文件、C语言函数库合并在一起,生成可执行文件。

1.函数的定义放到.c文件中,函数的声明放到.h文件中
2.如果使用某个.c文件中定义的函数,只需要#include这个.c文件对应的.h文件即可
3..h文件的作用:被别人拷贝。编译链接时不需要管.h文件
4.printf函数的返回值为int 类型,printf的函数值就是括号中双引号内字符串常量的字符数,一个正文汉字占用三个字符。

内存分析
默认情况下,系统将数字认定为十进制
二进制:0b/0B,八进制:0,十六进制:0x/0X(零,不是o)格式符中,八进制为%o(o不是零)
内存寻址由大到小,高位在下,字节编号大,低位在上,字节编号小。(栈的概念)变量地址为字节号最小的那个字节的地址

内存说明符---一般仅用于修饰int (可用sizeof求字符串长度)
int  4个字节
short  2个字节(等价于short int)---%d
long  8个字节 (等价于long int)---%ld
long long   8个字节(等价于long long int ) ----%lld。64位系统中,最大为8个字节,long和long long没有区别,32位时就有区别,long为4个字节,long long 为8个字节
signed (有符号) :%d 正数、0、负数  ---最高位当做符号位
unsigned (无符号) :%u 正数、0----最高位不当做符号位
不同类型的说明符可以组合在一起修饰int

位运算
1.&按位与
1>功能:只有对应的两个二进位均为1时,结果才为1,其余均为0
2>规律:二进制中,与1相&就保持原位,与0相&就为0
3>应用:能精确知道某一位的值是1还是0---实现:编写一个数,在这个位数上为1,其余均为0,将两个数进行安慰与运算,结果为1则原位为1,结果为0则原位为0

2.|按位或
1>功能:只要对应的两个二进制位有一个为1时,结果位就为1,否则为0

3.^按位异或
1>功能:当对应的二进制位相异(不相同)时,结果为1,否则为0。
2>规律:①相同整数相^得结果是0。②多个整数相^的结果跟顺序无关。比如5^6^7=5^7^6。③因此得出结论:a^b^a = b

4.~取反
对整数 a 的各二进位进行取反,符号位也取反( 0 变1 , 1变 0 )

5.<<左移-----a<<n
把整数a的各二进位全部左移n位, 高位丢弃,低位补0 。左移n位其实就是乘以2的n次方
由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出来的结果值可能会改变正负性

6.>>右移
把整数a的各二进位全部右移n位,保持符号位不变。右移n位其实就是除以2的n次方
为正数时, 符号位为0,最高位补0
为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定(mac中用1补齐)

构造类型:由多个基本数据类型组成的一种数据类型
数组的特点
1>只能存放一种类型的数据,比如int类型的数组、float类型的数组
2> 里面存放的数据称为“元素”

数组元素在内存中的存放顺序是相反的---a[0]在数组内存空间的最上方,数组元素下标越大,存储位置越靠下,字节编号越大。多个数组分配存储空间顺序还是和变量相同,由大到小分配。数组的地址就是首元素的地址。数组名代表着数组地址

字符串数组
char name[2][10]-----这个二维数组可以放两个字符数组,每个字符数组的长度均为10。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值