gpt4 book ai didi

c - 为什么 C 支持负数组索引?

转载 作者:太空狗 更新时间:2023-10-29 16:36:46 26 4
gpt4 key购买 nike

来自 this在 SO 中发布,很明显 C 支持负索引。

  1. 为什么要在程序中支持这种潜在的内存违规?

  2. 编译器不应该至少抛出一个负索引警告吗? (正在使用 GCC)

  3. 或者这个计算是在运行时完成的吗?

EDIT 1: Can anybody hint at its uses?

EDIT 2: for 3.) Using counters of loops in [] of arrays/pointers indicates Run-time Calculation of Indices.

最佳答案

计算在运行时完成。

负索引不一定会导致违规,并且有其用途。

例如,假设您有一个指针当前指向数组中的第 10 个元素。现在,如果您需要在不更改指针的情况下访问第 8 个元素,您可以使用负索引 -2 轻松实现。

char data[] = "01234567890123456789";
char* ptr = &data[9];
char c = ptr[-2]; // 7

关于c - 为什么 C 支持负数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18172885/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com