C语言学习笔记

本文介绍了计算机中的数据类型,包括进制转换、数值与非数值数据,如二进制、八进制、十进制、十六进制及其转换。讨论了基本的数据类型如char、int、float、double等,以及变量、存储类型和运算符,如算术、关系和逻辑运算。此外,还涵盖了输入输出函数scanf和printf,以及编程中的结构,如选择结构、循环结构和数组。函数和指针的概念也被提及,指针作为地址的保存者,允许间接访问内存。
摘要由CSDN通过智能技术生成

1.计算机的数据及其类型

进制转换、数值数据、非数值数据

非数值数据:字符、图片、ASCLL表等

数值数据:可以直接进行运算的数据  二进制、八进制、十进制、十六进制

二进制: 0~1(逢二进1)八进制:0~7(逢八进1)十六进制:0 ~9、a~ f(A~F)(逢16进1)

为了区分不同的进制:八进制前加0,十六进制前0x(0X)(0x7fa   0X7FA)

进制转换:其他进制转十进制:(注意:从右往左:从0次幂开始)

从十进制转其他进制:

十进制转二进制:除2倒取余数

十进制转八进制:除8倒取余数

十进制转十六进制:除16倒取余数

数据类型

关键字:系统预先定义好的,有特殊含义的,并且都是小写不能重新定义

数据类型:char、short、int、long、float、double、enum、union、struct、void

sizeof:计算所占内存空间的大小:单位:字节

标识符:程序员自己定义的,一般用来定义变量名,函数名,类

float(单精度浮点数):表示6~7位有效数据

double(双精度浮点数):表示15~16位有效数据

常量、变量

:#define  宏名  表达式

注意:1、宏名一般用大写表示,小写也可以,因为要和普通的变量区分开来,所以用大写

            2、宏后没有分号         宏只是一个单纯的替换!!!

局部变量:定义在函数体(任何函数体内)内的变量,存储在静态区

全局变量:定义在函数体外的变量,存储在栈区

存储类型:auto、static、extern、register

auto:修饰局部变量,修饰的变量存储在栈区

extern:修饰全局变量,修饰的变量存储在静态区

static:既可以修饰局部变量,也可以修饰全局变量,修饰的变量存储在静态区 

            修饰局部变量时,延长局部变量的生命周期,如果局部变量没有初始化,其值为0;如果初始化了,则只能初始化一次;(延长了生命周期,但是并没有延长作用域!!)

             修饰全局变量时,限制作用域,该变量只能在本文件内使用

register:修饰局部变量,存储在寄存器中;

运算符

算术运算符:%:取余   

                      注意:不能用于浮点数(++在前:先自加,在赋值,++在后:先赋值,在自加)

关系运算符:比较两者之间的关系,结果为(真1或者假0)(>  <  >=  <=  ==  !=)

逻辑运算符:&&      表达式1  && 表达式2

                     截断法则:有一个为假,结果就为假;前一个为假,后面就不在进行运算了

                     ||        表达式1  || 表达式2   

                     截断法则:有一个为真,结果就为真,前一个为真,后面就不在进行运算

三目运算符:表达式1 ? 表达式2 :表达式3

                     判断表达式1是否成立,如果成立,就将表达式2的值作为整个表达式的值,否则,                          就将表达式3的值作为整个表达式的值

逗号运算符:表达式1,表达式2,表达式3,。。。。。,表达式n

                      从左往右,依次去执行每个表达式,最后将表达式n的值作为整个表达式的值

                      注意:逗号运算符的优先级是最低的,因此在使用时要加上括号

位运算符:   &  |  ~  ^  <<  >>

                     按位与:&  都为1,才为1,有一个为0,就为0

                     按位或 :|   都为0,才为0,有一个为1,就为1

                     按位取反:~   1变0, 0变1

                     异或:^  相同为0,不同为1

                     左移:<<   

                     无符号数:高位丢弃,低位补0

                     有符号数:符号位不变,高位丢弃,低位补零

                     右移:>>   

                     无符号数:低位丢弃,高位补0:

                     有符号数:符号位不变,低位丢弃,高位补(0正,1负)

输入输出

函数:有独立功能的模块

标准的输入输出函数:scanf、printf(对输入以及输出的变量的类型没有限制)

输入:将键盘输入数据拷贝到内存中

Scanf(“格式控制串”,地址表);

格式控制串:原样输入的内容+格式化符

&+变量名://获取该变量的地址

输出:将内存中的数据打印至终端

printf(“格式控制串”,输出表);

格式控制串:原样输出的内容+格式化符

输出表:输出的内容

(格式化符要和输出表一一对应)

数据的三大结构

三大结构:顺序结构、选择结构、循环结构

顺序结构:语句按照一定的先后顺序去执行

选择结构:

单分支if选择结构:先判断表达式是否成立,如果成立,就执行语句。

双分支if选择结构:先判断表达式是否成立,如果成立,则执行语句1,否则,执行语句2;

 switch语句:

  1. 表达式不能为float类型
  2. 标号必须为常量
  3. 当表达式等于标号时,就冒号后面的语句,直到switch,case语句结束为止,或者遇到break语句结束。
  1. switch,case语句是否结束)
  2. 是否遇到了break(break:1、结束switch,case语句  2、跳出循环(结束循环))

循环结构:循环的起始条件、循环的终止条件、循环变量的变化

for循环:表达式1:循环的起始条件表达式、2:循环的终止条件表达式、3:循环变量的变化

             先执行表达式1,然后执行表达式2,如果表达式2为真,执行循环体,然后执行表达式3;如此反复,当表达式2为假时,结束循环

while语句:判断表达式是否成立,如果成立,就执行循环体,反之,跳出循环

()

数组

数组的概念:一组数据类型相同的元素组和在一起

                      特点:1、数据类型相同   2、地址连续

数组名:1、整个数组

               2、数组首元素的地址  arr ==  &arr[0]   (获取一个变量的地址:&+变量名)

数组的初始化:数组定义在函数体内,并且用static进行修饰,里面的所有元素为0(静态局部变)


                       数组定义在函数体内,如果没有进行初始化,里面的所有元素是随机值(局部变量)

                         数组定义在函数体外,如果没有进行初始化,里面的所有元素为0(全局变量)

二维数组:一组数组的元素组和在一起       
                                 特点:1、数据类型相同   2、地址连续   (一维数组的元素的类型以及个数必须相同)

函数

函数是具有独立功能的模块

使用函数是为了提高代码的复用率,让程序变得模块化、简洁

指针

指针是一种数据类型,它是一种保存地址的数据类型,

内存分配的最小单元:字节

每一个字节都有一个编号,我们把这个编号就叫做地址

地址的本质:内存单元的编号

指针:指针就是地址

指针的本质:内存单元的编号

存储类型  数据类型 * 指针变量名;       Int   * p;

//定义了一个指针变量p,p用是用来保存(谁的(int)地址)地址

数据类型:指针指向的数据类型(指针保存的是什么数据类型的变量的地址)

指针的数据类型:int *

指针的赋值相当于改变指针的指向(指针赋值时要注意 指针指向的数据类型必须相同)

二级指针:保存一级指针的地址

存储类型  数据类型  *指针变量名; Int * *pp;

数据类型:指针指向的数据类型;(二级指针指向的数据类型:一级指针的数据类型)(int  *)

二级指针的数据类型:int **;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值