实验内容:1.掌握指针在数组中的运用(奇偶排列)
2.运用指针实现数据交换
1.掌握指针在数组中的运用(奇偶交换)
实验代码:
#include<stdio.h>
#define N 10
void arrsort(int a[], int n);
int main()
{
int a[N], i;
printf("Please erter 10 integers:");
for (i = 0; i < N; i++) scanf("%d", &a[i]);
arrsort(a, N);
for (i = 0; i < N; i++) printf("%d ", a[i]);
}
void arrsort(int a[], int n)
{
int* p, * q, temp;
p = a;
q = a + n - 1;
while (p < q)
{
while (*p % 2 == 1) p++;
while (*q % 2 == 0) q--;
if (p > q) break;
temp = *p; *p = *q; *q = temp;
p++; q--;
}
printf("After:");
}
运行结果:
(输入10 36 31 53 96 93 3 7 8 5)
Please erter 10 integers:10 36 31 53 96 93 3 7 8 5
After:5 7 31 53 3 93 96 36 8 10
2.运用指针实现数据交换
实验代码:
#include<stdio.h>
void swap(int* x, int* y);
int main()
{
int a, b;
printf("Please Input a=:"); scanf("%d", &a);
printf("\n b=:"); scanf("%d", &b);
swap(&a, &b);
printf("\nAfter Call swap:a=%d b=%d\n", a, b);
return 0;
}
void swap(int* x, int* y)
{
int temp;
temp = *x;
*x = *y;
*y = temp;
}
运行结果:
Please Input a=:5
b=:8
After Call swap:a=8 b=5
总结:
1.p++是向后移动,p--是向前移动
2.p和*p代表的不一样,p指的是地址,*p指的是值
3.交换x、y,a、b不会发生改变,交换x、y地址的值才会
4. 数组的名称即整个数组的起始存储地址,可以定义一个指针指向它,然后通过指针移动来访问各个数组成员