C语言学习(2)

整型

存储整数的类型,因为操作系统的不同,分配的内存空间大小可能会不相同

类型存储大下
int2或4字节
signed int2或4字节
unsigned int2或4字节
shot/ signed short/unsigned short2字节
long/signed long/unsigned short4字节
浮点类型
类型存储大小范围精度
float 单精度4字节1.2E-38到3.4E+386位小数
double双精度8字节2.3E-308到1.7E+30815位小数

注:
1.浮点数的存放形式,浮点数=符号位+指数位+尾数位。
2.尾数部分可能丢失,造成精度损失。

字符类型

1.char是1个字符;
2.用单引号括起来;
3.C中允许使用转义字符;
4.在C中,char的本质是一个整数,然后输出时,是ASCII码对应的字符;
5.可以直接给char赋一个整数,然后输出时,会按照对应的ASCII字符输出;
6.char类型是可以进行运算的,相当于一个整数,因为它都应Unicode码。

基本数据类型转换

当C程序在进行赋值或者运算是,精度(范围)小的类型自动转换为精度大的类型

自动转换规则
char/short–>int–>unsigned–>long–>double
float–>double

强制类型转换

将精度高的数据类型转换为精度小的数据类型,使用时加上强制类型转换符(),但可能造成精度降低或一处

格式
(类型名)表达式
注:这种强制类型抓换操作并不改变操作数本身

指针类型(初认识)
int num = 1;
// 1.int*表示的类型为 指针类型
// 2.名称prt是一个int*类型,也是一个变量
// 3.prt指向(保存)一个为int类型的变量的地址
// 4.要想得到某个变量的地址,使用&来取出这个变量的地址
// 5.地址的输出格式为%p
int*prt = #
//指针变量,作为一个变量也有自己的地址
//指针变量的值是一个地址
//获取指针变量保存的地址(值)指向的值,使用*prt
printf("num的地址是%p",&num);
printf("prt的地址是%p,prt存放的值%p, ptr值指向的值%d",&prt,prt,*prt);

最终结果
num的地址是0061FECC
prt的地址是0061FEC8,prt存放的值0061FECC, ptr值指向的值1
num的地址和prt保存的值相同
在这里插入图片描述

指针的类型

每一个基本类型对应着自己的指针类型
指向数组指针
指向结构体指针
指向共用体指针

值传递和地址传递

C语言传递参数(或赋值)可以是值传递,也可以传递指针,传递指针也叫地址传递
分类
(1)默认传递值的类型:基本数据类型,结构体,共用体
(2)默认传递地址的类型:指针、数组
值传递:将变量指向的存储内容,在传递或赋值时,拷贝一份给接收变量(浅拷贝)
地址传递或指针传递:如果是指针,就将指针变量存储的地址,传递给接收变量,如果是数组,就将数组的首地址传递给接收变量

常量
  1. 常量是固定值,在程序执行期间不能更改,固定的值又叫字面量。
  2. 常量可以是任何的基本数据类型,吐整型、浮点型、字符或字符串等
  3. 常量的值在定义后不能进行修改

常量的定义
(1)#define 常量名 常量值;#define预处理器。
(2)使用const关键字定义:const 数据类型 常量名 = 常量值
const和define的区别

  1. const定义的常量带类型,define没有
  2. const是在编译、运行的时候起作用,而define是在编译的预处理阶段起作用
  3. define只是简单的的替换,没有类型检查。简单的字符串替换会导致边界效应
  4. const常量可以进行调试,define不能进行调试,主要是预编译阶段就已经替换了,调试的时候就没了
  5. const不能重新定义,不可以定义两个一样的,而define通过undef取消某个符号的定义,再重新定义
  6. define可以配合#ifdef、#ifndef、#endif来使用,可以让代码更灵活,比如我们可以通过#define来启动或者关闭调试信息。
#define A
#define B A+3
#define C A/B * 3#define A
#define B (A+3)
#define C A/B * 3
结果不一样
运算符
  1. 算术运算符(+、-、、/、%等):a%b = a-a/bb(取模公式)
  2. 赋值运算符
  3. 关系运算符
  4. 逻辑运算符(&&、||、!)
  5. 位运算符(&、|、^、~)
  6. 三元运算符(表达式?表达式1:表达式2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值