题目:通过指针引用数组元素
方法1
#include<stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int i;
for(i=0;i<5;i++)
printf("%d\n",*(a+i));
return 0;
}
1
2
3
4
5
方法2
#include<stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int i,*p=a;
for(i=0;i<5;i++)
{
printf("%d\n",*p);
p++;
}
return 0;
}
1
2
3
4
5
方法3
#include<stdio.h>
int main()
{
int a[5]={1,2,3,4,5};
int *p=a;
for(p=a;p<a+5;p++)
{
printf("%d\n",*p);
}
return 0;
}
题目:定义函数inv将数组a中n个整数按相反顺序存放(逆置)
#include<stdio.h>
void inv(int a[], int n)
{
int i = 0, j = n - 1, t;
for (; i < j; i++, j--)
{
t = a[i]; a[i] = a[j]; a[j] = t;
}
}
int main()
{
int i, a[] = { 10,20,30,40,50,60,70,80 };
inv(a, 8);
for (i = 0; i < 8; i++)
printf("%d\n", a[i]);
return 0;
}
80
70
60
50
40
30
20
10
利用指针变量对函数inv进行优化
#include<stdio.h>
void inv(int a[], int n)
{
int t, * p, * q;
p = a; q = a + n - 1;
for (; p < q; p++, q--)
{
t = *p; *p = *q; *q = t;
}
}
int main()
{
int i, a[] = { 10,20,30,40,50,60,70,80 };
inv(a, 8);
for (i = 0; i < 8; i++)
printf("%d\n", a[i]);
return 0;
}