c - 为什么 t 引用 argv[3] 的索引 [-1] 是什么意思 谢谢
问题描述
#include <stdio.h>
void f(char**);
int main()
{
char *argv[] = { "ab", "cd", "ef", "gh", "ij", "kl" };
f(argv);
return 0;
}
void f(char **p)
{
char *t;
t = (p += sizeof(int))[-1];
printf("%sn", t);
}
t = (p += sizeof(int))[-1];
它是如何引用索引三的,argv
我很困惑,因为[-1]
解决方案
虽然这是一条奇怪的线,但它确实做到了,因为 的大小int
通常为 4,您应该注意这可能不适用于所有机器,因为在某些机器中,int
大小可能不是 4 字节。
拥有argv[4]
与*(argv + 4)
since p
=相同argv
,拥有(p + sizeof(int)) - [1]
与拥有(argv + sizeof(int)) - [1]
or argv + sizeof(int) - 1
、so *(argv + 4 - 1)
、so *(argv + 3)
or相同argv[3]
。.
推荐阅读
- c# - 获取 dot net 4.6 框架和 specflow 3.9.8 的 Hooks 和 Step 定义文件的错误
- django - 在 AWS for Django 应用程序中启动 Elastic Beanstalk 实例时出错
- visual-studio-code - 如何收听 vscode 扩展任务的结果
- python - 如何在python中保留一个字符反向编写字符串
- javascript - 将静态代码与我的动态代码相结合。(基于我在数据库中获取的内容)
- c++ - C++ 指针和增量运算符 (++)
- django - 必须安装 `coreapi` 以获得架构支持
- swift - 使用来自区块链 API 的数据
- python - 使用 Python 将 Json 数据转换为 CSV 文件格式
- javascript - 我的代码有效但与答案不同?只要它工作就重要吗?Javascript