以相反的顺序打印数组指针值

时间:2019-02-28 19:05:33

标签: c

我要反向打印指针数组

myProp

输出:

#include <stdio.h>
#define size 5
int main()
{
  int a[size] = {1,2,3,4,5};
  int i;
  int *pa = a;
  for(i = size; i >0; i--)
  {
    printf("a[%d] = %d\n",i,*pa);
    pa++;
  }
  return 0;
}

我想要的输出是:

a[5] = 1    
a[4] = 2
a[3] = 3    
a[2] = 4    
a[1] = 5

3 个答案:

答案 0 :(得分:2)

替换为

#include <stdio.h>
#define size 5
int main()
{
  int a[size] = {1,2,3,4,5};
  int i;
  int *pa = (a+size-1);
  for(i = size; i >0; i--)
  {
    printf("a[%d] = %d\n",i,*pa);
    pa--;
  }
  return 0;
}

答案 1 :(得分:2)

您太难了。给定一个指向数组的指针,您可以像在数组本身上那样使用索引操作符:

    int a[size] = {1,2,3,4,5};
    int i;
    int *pa = a;
    for (i = size - 1; i >= 0; i--) {
        printf("a[%d] = %d\n", i, pa[i]);
    }

或者,如果由于某种原因要避免使用索引运算符,则只需从末尾开始就开始指针...

    *pa = a + size;

...并递减,直到执行循环:

    for (i = size - 1; i >= 0; i--) {
        pa--;
        printf("a[%d] = %d\n", i, *pa);
    }

请注意,顺便说一句,C语言中的数组索引从0开始,正如上面的示例代码正确说明的那样。

答案 2 :(得分:0)

您不必使用指针。一个更简单的实现

#include <stdio.h>
#define size 5
int main()
{
  int a[size] = {1,2,3,4,5};
  for(int i = size-1; i >=0; i--)
    printf("a[%d] = %d\n",i,a[i]);
  return 0;
}