V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  AFOX  ›  全部回复第 5 页 / 共 19 页
回复总数  374
1  2  3  4  5  6  7  8  9  10 ... 19  
@luoanziyaa hr 说不合适了 hh
@ipwx emmm ,这段代码就是让找问题的啊….
@pythonee 正常的 c++岗位,其实我面完自己想了想不算难,只是面试角度和正常不一样,也就是你说的刁钻吧 hh
@vincent7245 不是应届
@feather12315 应该是,问了很多数学和逻辑推理
@me1onsoda 很久没做了,想不起来 qwq
@AFOX
@lyusantu
我知道,但是回答不出来其实概率就低了,对自己挫败感也挺强的,尤其是本来应该打出来的题
@re2ikotr 做音视频 sdk 的
@nenseso 没说考虑不考虑
@smdbh 他们不给我面聊的机会 qwq ,我线下面试都没见到面试官….
@basncy
我很同意你的第一点,面试官应该是想考察通过 offset 快速定位的知识点,但是感觉题没出好 hh

第二点的话,我刚刚试了在 gcc 7.5 下还是可以编译通过,但是会报 warning 了。
来自 ChatGPT 对第一题的解释:

1. **数组声明和初始化**:
```c
int a[5] = {1, 2, 3, 4, 5};
```
这行代码声明了一个包含 5 个整数的数组 `a`,并将其初始化为 1, 2, 3, 4, 5 。

2. **指针初始化**:
```c
int *p = &a + 1;
```
这一行代码比较复杂。我们逐步解析:

- `&a` 是数组 `a` 的地址。`&a` 的类型是 `int (*)[5]`,即指向一个包含 5 个整数的数组的指针。
- `&a + 1` 表示将指针 `&a` 向前移动一个单位,这里的单位是整个数组 `a` 的大小(即 5 个整数的大小)。因此,它指向的是数组 `a` 之后的内存位置。
- `&a + 1` 的类型仍然是 `int (*)[5]`。
- 将 `&a + 1` 赋值给 `int *p` 时发生了隐式转换。最终 `p` 指向的是紧跟在数组 `a` 之后的内存位置。

总结来说,`p` 指向的是数组 `a` 结束之后的那块内存位置。

为了更好地理解这一点,我们来看一下内存布局:

```
地址 值
0x1000 1 (a[0])
0x1004 2 (a[1])
0x1008 3 (a[2])
0x100C 4 (a[3])
0x1010 5 (a[4])
0x1014 ? (p 指向这里)
```

在这里,`p` 指向地址 `0x1014`,也就是在 `a[4]` 之后的内存位置。

### 访问 `p`
在这种情况下访问 `*p` 是未定义行为,因为它指向的是数组 `a` 结束之后的那块内存位置。

你是否需要更多关于指针运算的信息,或者对这个代码有其他具体的问题?
@iOCZS 因为要一个表达式,所以应该是 (number & number - 1) == 0
``` C
// 关于这道题,有两种情况,比如如果是下面这样,那输出就是 2 ,5
int main() {
int a[5] = {1, 2, 3, 4, 5};
int *p = &a + 1;
printf("%d, %d", *(a+1), *(p - 1));

return 0;
}

// 如果是下面这样,那么编译报错
int main() {
int a[5] = {1, 2, 3, 4, 5};
int *p = &(a + 1);
printf("%d, %d", *(a+1), *(p - 1));

return 0;
}

有点记不清当时题目有没有这个括号了,不过我都错了 qwq
```
@AFOX 不对,我好像少了个括号,不过我写的是 2 ,1 ,反正是错了 qwq
@LHN 第一题是语法错误,很操蛋的题
@ipwx 开发找的,开发说我基本都是错的....我就回来自己算了下
1  2  3  4  5  6  7  8  9  10 ... 19  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2529 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 24ms · UTC 04:45 · PVG 12:45 · LAX 20:45 · JFK 23:45
Developed with CodeLauncher
♥ Do have faith in what you're doing.