C语言数组下标是负数
2013-04-16 21:53
387 查看
#include <iostream> #include <cstdio> using namespace std; int main(int argc, char *argv[]) { int a[10]; int i, j, k; int *p = NULL; for (i=0; i<10; i++) a[i] = i + 10; printf("Using a...\n"); for (i=0; i<10; i++) printf("%d ", a[i]); printf("\n"); printf("Using p...\n"); p= a + 1; for (i=-1; i<9; i++) printf("%d ", p[i]); printf("\n"); while(1); return 0; }
上例中把a+1的值(地址)赋给p后,p[-1]=*(p+(-1))=*(a+1-1)=*(a+0)=a[0]。
可见,通过指针,可以使用负数下标。但有两点要注意:
a.如果下标是从负数开始的,那么下标上界也要做相应的变动
b.如果数组是动态申请的,则撤销数组所占内存时要free(a)而不是free(p),因为a才真正指向数组空间的首地址。
http://blog.csdn.net/heli007/article/details/7452628
相关文章推荐
- C语言数组下标是负数
- C语言允许数组下标是负数
- C语言:用负数作数组下标?YES!
- C语言中数组下标可以为负数
- 程序猿之---C语言细节14(字符串数组内存分配细节‘\0’空字符、字符串数组赋值细节、字符串换行连接和下标)
- C专家编程 十 规则2: C语言把数组下标作为指针的偏移量(二)
- MATLAB中通过矩阵索引值求元素下标以及转为C语言数组下标
- c语言实现在一个数组中求出最大数所在的下标
- 数组排序,并返回排序后的数组对应原数组的下标(c语言)
- (c语言)指针和数组下标
- 数组使用负数下标
- 一种方便处理负数下标数组的方法
- C语言不做数组下标安全性检查
- 神奇的C语言十:数组下标的语法
- C语言数组特性-取下标运算中的交换律----i[a] == a[i]
- 程序猿之---C语言细节11(数组下标越界后测试、数组下标中“ ,”运算符,副作用)
- 数组指针,指针数组,以及数组下标是否可以为负数
- [C语言]用剪刀将1条绳子剪开成为10条绳子,需要剪几下?数组下标的不对称边界原理[]
- C++ 数组负数下标 - 反向寻址
- C/C++ 数组负数下标 - 反向寻址