首页 > 编程语言 > 详细

C语言中,a[-1] (负数下标)的用途

时间:2021-06-15 23:57:58      阅读:32      评论:0      收藏:0      [点我收藏+]

例子1

我们都知道数组下表是从0开始的,假如我们想从1开始,可以这么干:

定义一个指针,指向a[-1]这个位置

#include <stdio.h>
void main()
{
    int a[] = {1,3,4};
    int *p = &a[-1];
    int i =0;
    for( i = 1; i <4; i++)
    {
        printf("%d\n", p[i]);
    }
}

因为数组并不检查下表是否越界,下表仅表示偏移, -1就表示第一个元素前面那个元素

 

例子2

在 头文件 stdarg.h 中,有如下宏定义:

typedef char* list;

va_arg

#define va_arg(list,mode)   ( (mode *) ( list += sizeof(mode) ) )[-1]

返回可变参数列表的当前指定类型参数,并将指针指向下一参数(mode参数描述了当前参数的类型)

注:list += sizeof(mode) 表示指针 list 指向下一个参数,((mode *) list) 表示把指针 list 强制转换为 mode * 类型,list[-1] 表示取指针 list 当前指向的前一个成员

 

C语言中,a[-1] (负数下标)的用途

原文:https://www.cnblogs.com/god-of-death/p/14886562.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!