C++指针详解

注:int占用4个四个B。
重点:数组名aa+1表示a的存储单元的地址+1。
二维数组的存储单元是一维数组;
三维数组的存储单元是二维数组。

  • 内存四区:
    • 代码区
    • 全局区
    • 堆区
    • 栈区
  • 首地址:
    • 一段内存空间中第一个存储单元的地址。
  • 指针
    • 野指针
int *p;  //这个时候是野指针,因为不知道变量p所指向的地址,危险!。
int *p = NULL; //避免野指针
  • 空指针
void* //不知道指向的类型时,可以用空指针代替。等明确了之后再进行类型转换,常用于动态内存分配:malloc new
  • 一维数组和指针
    • 指针运算:

只含有:+ - ++ --四种运算。
以指针所指向的类型空间单位进行偏移。
在这里插入图片描述

例子:
1、

int a[5] = {1, 2, 3, 4, 5};
cout << a <<endl; // 输出第一个存储单元的地址,即a[0];
cout << &a <<endl; // 同样输出a[0]的地址;
a+1; //地址增加4个字节;
&a+1; //地址增加20个字节;

2、
在这里插入图片描述

  • 二维数组与指针
    int a[3][4];
    数组名a指向二维数组的第一个存储单元(是一个一维数组,说白了,二维数组就是多个一维数组),即a[0]的 地址:
    在这里插入图片描述
    在这里,a+1加十六个 字节;
    附:a[0]是一维数组的数组名,a[0]+1地址加4个字节。
    例子:
    在这里插入图片描述
    注:二维数组要取值要用两次*
  • 进阶:字符串和字符数组
    区别:字符串多一个\0,若字符数组多一个\0,则字符数组变成字符串。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值