[C/CPP笔记]指针篇

序言:红旗跃过汀江,直下龙岩上杭。收拾金瓯一片,分田分地真忙。《清平乐·蒋桂战争》


【看山是山】

也叫地址,就是内存块的首地址。

  • 指针变量就是存放指针数据的变量。
  • 所有指针变量都是4字节(32环境)8字节(64环境)
  • 未赋初值的指针变量禁止使用(访问未初始化的指针的值程序直接崩溃。访问NULL指针的值也会奔溃)

【看山不是山】
Q1:二维数组的储存

在内存中,a 的分布是一维线性的,整个数组占用一块连续的内存。

Q2:在函数入参中,二维数组不能像一维数组那样直接传递给一个指针?

在C/C++中,一维数组和指针有一个特殊的关系:当你传递数组时,编译器不会复制整个数组,而是将它的首地址传递给函数。这使得函数可以通过指针访问数组的内容,而不必处理整个数组的复制。(一维数组在函数参数中自动衰变为指针)

二维数组不能像一维数组那样直接传递给一个指针(例如 int**),主要是因为二维数组的内存布局和C/C++中指针的类型规则不同

函数定义需要传入的是一个指向指针的指针。

调用时,传入的是一个二维数组(本质上是一个连续的内存块),不是一个真正的指针数组

Q3:指针常量,常量指针、指向常量的常指针

(1) 指针常量:

int * const p =10;

const限制的是指针p的值,但是没有限定p指向的内存地址里的数据,所以内存的数据可以修改。

指针的指向不可以修改,指针指向的内存的值可以修改

即:10可以修改,但10存放的内存地址不能修改

(2) 常量指针:

const int *p=10;

常量指针,首先要是常量。就是指向的值要是一个常量,但是指向的内存地址不做限制

指针的指向可以修改,但是指针指向的值不可以修改。

即:10不可以修改,但10存放的内存地址能修改

(3) 指向常量的常指针:

const int const *p=10;

指针的指向不可以修改,指针指向的值也不可以修改。

即:10不可以修改,但10存放的内存地址也不能修改。


【看山还是山】

滴答~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值