我要反向打印指针数组
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
答案 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;
}