cpp基础5

1.数组

1.声明

数组开辟的内存地址是连续的
一维数组

int a[3];//已经开辟内存默认都是 0
int a[3] = {1, 2, 9};
int a[] = {1, 2, 9};

二维数组

int a[2][3];//已经开辟内存默认都是 0
int a[2][3] = {1, 3, 4, 2, 12, 32};
int a[][3] = {1, 3, 4, 2, 12, 32};//3位置不能省略
int a[2][3] = {{1, 3, 4} {2, 12, 32}};//标准写法

2.数组函数参数

作为函数参数传递的是地址

int add(int a[]){
//可以改变 a 里的值
}

void main(){
    int a[] = {1, 3, 4};
    add(a);
}

3.对象数组

自定义数据类型数组,对象、结构体等

//调用有参数的构造函数
Name A[2] = {Name(2, 3), Name(1,2)};
//默认初始化调用 {Name(), Name()}
Name A[2];

2.指针

地址:地址编码的最基本单位是字节,每个字节由8个二进制位组成,每个字节是基本的内存单元有一个地址。

1.取内存数据

1.变量名
变量名是地址的别名,可得到地址,直接取数据(int a; &a)
2.地址
可以直接取内存数据
3.指针
指针里存放的是地址,再通过地址找数据,属于间接取数据(int *p; *p)

2.指针类型

指针可以指向任意数据类型。
1.声明:int *p;
2.声明指针类型时信息

  • 类型需要的内存空间 int
  • 限定了此类型能进行哪些运算操作 int char…
  • 指针地址里有很多数据,根据不同数据的长度去取,取出后在强制转换成特定的类型

* 和 &

1.声明语句
int *p;
int *p = &a;

int a = 5;
int *p;//声明是一个指针
int *p = &a;

int &b;//声明引用不行

2.执行语句
*p = a;
p = &a;

int a = 5;
int *p;
*p = a;//执行地址内容
p = &a;//&取地址

3.野指针
int *p; 随机分配一个地址给 p
*p; 按照int类型长度为4字节,取 p 地址的内容,野指针不一定取的是什么

避免野指针:int *p = 0;

4.void指针
指针就是存放地址的,内存是固定的 1 字节,

3.指针运算

int *p;//int 类型占4个字节
p++; p+1; //p向后移动4个字节

short *s;//short 类型栈2个自己
s++; s+1;//s 向后移动两个字节长度
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值