基础篇(二)

学习总结

基础篇(二)

一 、基础数据类型
类型关键字:char

char ls='a';//char的内存大小为1字节
//一般用于处理基于ASCII表的字符

在这里插入图片描述
在这里插入图片描述

类型关键字:short

short ls=2;  //内存大小为2字节的整数类型

类型关键字:int

int ls=4;  //内存大小为4字节的整数类型

类型关键字:long

long ls=4;//在不同操作系统中的内存大小不同  
//在x86(32位系统)中long 的内存大小为4字节
//在x96(64位系统)中long 的内存大小为8字节

类型关键字:long long

long long ls=8;//内存大小为8字节的整数类型

类型关键字:unsigned

unsigned ls=4;//在默认情况下为unsigned int 类型 
//表示无符号的4字节整数类型
//无符号  一般表示  无负号  “ - ”
//unsigned 可与其他整数类型关键字联合使用
//例如
unsigned short ls1=2;//表示无符号2字节的整数类型
unsigned int   ls2=4;//表示无符号4字节的整数类型
unsigned long  ls3=4;//表示无符号4/8字节的整数类型
unsigned long long ls4=8;//表示无符号8字节的整数类型
//在无符号整数变量与有符号整数变量执行运算时 负数以补码的形式进行计算

所以在使用unsigned 定义变量是 需注意与其他变量进行运算是需注意是否有无符号

类型关键字:float

float ls=4.0;//内存大小为4字节的浮点数类型
//float的小数点后有效位为 6-7位

类型关键字:double

double ls=8.0;//内存大小为8字节的浮点数类型
//double的小数点后有效位为 15-16位

类型关键字:long double

long double ls=16.0;//内存大小位16字节的浮点数类型
//long double的小数点后有效位为 18-19位

浮点数类型关键字不能与unsigned联合使用

二、数组

1、[ ]的三种作用

1)声明变量的时候有 [ ] ,表示声明的是数组变量
2)函数参数有 [ ] ,此时表示指针(或者也可以看作传入一个数组参数)
3)变量名(数组首地址)+ [无符号整数 ] ,表示下标运算

2、一维数组
1)字符串数组/字符串
定义:
1、以‘ \0 ’结尾的字符数组
2、输出输入方式:

//c++ 输入输出
//在有初始化内容时,编译器会自动判断数组大小
//在无初始化内容时,需指定数组大小
char name[4]{};
char name1[]{"hello world!"};
std::cin>>name;
std::cout<<name;
//C语言 输入输出
scanf("%s",name);//%s  表示输入输出的为ASCII码字符
printf("%s",name);

字符/字符串常见的4种声明方式

//在有初始化时,数组表示的是常量内容
char ls[16]{"hello world!"};
char *ls1="hello wworld!";
char ls2[]{"hello world!"};
char ls='a';

2)整数数组
整数一维数组与字符串数组声明方式相同

int ls[16]={0};
int ls[]{1,2,3,4};
//初始化时每个整数之间需要用 “,”逗号分隔
  1. 浮点数数组
    与整数一维数组声明方式相同
float ls[16]={0};
double ls1[]{1.23,2.34,3.45,4.56};
//初始化时每个浮点数之间需要用 “,”逗号分隔

4)取值运算符 &

//数组的变量名为此数组的内存首地址
int ls[8]={0};
ls==&ls[0]//首元素的内存地址
&ls[0];&ls[1];//单个元素的内存地址
&a;//数组的首地址

5)下标

//数组的下标从0开始到申请数组的数量-1结束
int ls [4]{};
ls[0]=0;//数组的第一个元素
ls[1]=1;
ls[2]=2;
ls[3]=3;//数组的最后一个元素

3、多维数组
1)二维数组的声明方式

int ls[2][2]{};
int ls[2][2]{ { 1,2 }, {2,3} };
//多维数组的方式以此类推即可

2)二维数组的取地址

int ls[2][2]{};
&ls[0][0];//二维数组的首地址
&ls[1][1];

4、数组在内存中时如何实现的

数组在内存中就是一串连续的内存空间

int ls[2]{};
std::cout << &ls[0] << std::endl;//内存地址为 0019FC2C
std::cout << &ls[1] << std::endl;//内存地址为 0019FC30
std::cout << &ls[2] << std::endl;//内存地址为 0019FC34

在这里插入图片描述
由上图可看出每个元素之间都相差4字节大小的内存空间

同样多维数组也是一串连续的内存空间

int ls[2][2] = {0};
	std::cout << &ls[0][0] << std::endl;//内存地址007CF9C
	std::cout << &ls[0][1] << std::endl;//内存地址007CFA0
	std::cout << &ls[1][0] << std::endl;//内存地址007CFA4
	std::cout << &ls[1][1] << std::endl;//内存地址007CFA8

在这里插入图片描述
由上图可看出多维数组也是一串连续的内存空间

所以我们可以使用指针的方式来访问二维数组

int ls[2][2] = {0};
int* p={&ls[0][0]};//指针P指向了 二维数组ls的首地址
//此时 p可以使用一维数组的方式访问与从新赋值二维数组内元素的数据
//例如
    
int main()
{
	int ls[2][2] = { 0 };
	int* p = { &ls[0][0] };//指针P指向了 二维数组ls的首地址
	//此时 p可以使用一维数组的方式访问二维数组的数据
	//例如
	ls[0][0] = 555;
	ls[0][1] = 2;
	ls[1][0] = 666;
	std::cout << "ls[0][0]=" << ls[0][0] << std::endl;
	std::cout << "ls[0][1]=" << ls[0][1] << std::endl;
	std::cout << "ls[1][0]=" << ls[1][0] << std::endl;
	std::cout << "==================" << std::endl;
	std::cout << "p[0]=" << p[0] << std::endl;
	std::cout << "p[1]=" << p[1] << std::endl;
	std::cout << "p[2]=" << p[2] << std::endl;
	std::cout << "==================" << std::endl;
	p[0] = 777;
	std::cout << "p[0]=" << p[0] << std::endl;
	std::cout << "ls[0][0]=" << ls[0][0] << std::endl;
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值