zoukankan      html  css  js  c++  java
  • C语言数组下标是负数

      

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std; 
     4 
     5 int main(int argc, char *argv[]) 
     6 {
     7    int a[10];
     8    int i, j, k;
     9    int *p = NULL;
    10    
    11    for (i=0; i<10; i++)
    12        a[i] = i + 10;
    13        
    14    printf("Using a...\n");
    15    for (i=0; i<10; i++) 
    16        printf("%d ", a[i]);
    17    printf("\n");
    18    
    19    printf("Using p...\n");
    20    p= a + 1;
    21    for (i=-1; i<9; i++) 
    22        printf("%d ", p[i]);
    23    printf("\n");
    24    
    25    while(1);
    26    return 0;
    27 }

      上例中把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

  • 相关阅读:
    JAVA读取properties
    nginx默认语法
    csp-s模拟45
    csp-s模拟44
    noip模拟测试42
    noip模拟测试40
    noip模拟测试21
    noip模拟测试20
    noip模拟测试19
    noip模拟测试18
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3025010.html
Copyright © 2011-2022 走看看