#刷题面试---C++

1.指针 偏移

指针与数组
选项
在这里插入图片描述
解答:

&a+1不是首地址+1,系统会认为加了一个整个a数组,偏移了整个数组a的大小。
&a是取地址后,再+1;而ptr-1是先首地址-1,再对整体取值*。
对地址+或-,是整体偏移;对指针+1或-1,是数组内地址偏移。

2.定义 类型

在这里插入图片描述
解答:

#define后的内容 两部分相等 INT_PTR=int*;
INT_PTR a,b; 即为 int* a,b
所以a是指针,b是整型变量

3. 数组 指针

在这里插入图片描述
解答:

对于a[row],a是一维数组的首地址,* (a+1) = a[1];
对于a[x][y],可以看作(a[x]) [y],即(a[x])是(a[x])[y]的首地址,* (a[0] +1) = a[0][1]
那么对于(a[row]) [col],a代表什么呢?让我们变换一下:
(a[row]) [col] = (* (a+row) )[col] =* (* (a+row) + col)
这样看,a[row]是不是很像一个指针数组,它的内部元素全部是指针,a[0]即指向第0行的指针,a[1]即指向第一行的指针。这样理解a也就比较容易了,可以把它当做数组a[row]的首地址,即 a = &a[0],于是乎 *(a+row) = a[row].

二维数组中表示a[i][j]的地址的方式:
a[i] + j = * (a+i) +j = &(a[i][j])


未解决:

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值