数组位移的几种指针使用法

方法一:
void change_num(int *a[], int *b[], int m, int n)
{
	int i = 0, j = m - n;
	while (i < n)
		*b[i++] = *a[j++];
	j = 0;
	while (j < m - n)
		*b[i++] = *a[j++];
}

#include
int main()
{
	void change_num(int *a[], int *b[], int m, int n);
	int a[10], b[10];
	int i;
	int *x[10], *y[10];
	for (i = 0; i < 10; i++)
	{
		x[i] = &a[i];
		y[i] = &b[i];
	}
	for (i = 0; i < 10; i++)
		scanf_s("%d", x[i]);
	change_num(x, y, 10, 3);
	for (i = 0; i < 10; i++)
		printf("%d%c", *y[i], i < 9 ? ' ' : '\n');
	return 0;
}
方法二:
void sort_num(int *p1, int *p2, int m, int n)
{
	int i = 0, j = m - n;
	while (i < n)
		p2[i++] = p1[j++];
	j = 0;
	while (j < m - n)
		p2[i++] = p1[j++];
}

#include
int main()
{
	void sort_num(int *p1, int *p2, int m, int n);
	int a[10], b[10];
	int *x1, *x2;
	int i;
	x1 = a;
	x2 = b;
	for (i = 0; i < 10; i++)
		scanf_s("%d", x1 + i);
	sort_num(x1, x2, 10, 3);
	for (i = 0; i < 10; i++, x2++)
		printf("%d%c", *x2, i < 9 ? ' ' : '\n');
	return 0;
}
方法三:
void sort_num(int *p1, int *p2, int m, int n)
{
	int i, j;
	for (i = 0, j = m - n; i < n; i++, j++)
		p2[i] = p1[j];
	for (j = 0; j < m - n; i++, j++)
		p2[i] = p1[j];
}

#include
int main()
{
	void sort_num(int *p1, int *p2, int m, int n);
	int a[10], b[10];
	int *x1, *x2;
	int i;
	x1 = a;
	x2 = b;
	for (i = 0; i < 10; i++)
		scanf_s("%d", x1 + i);
	sort_num(x1, x2, 10, 3);
	for (i = 0; i < 10; i++, x2++)
		printf("%d%c", *x2, i < 9 ? ' ' : '\n');
	return 0;
}
方法四:
void sort(int *p, int m, int n)
{
	int i, t;
	for (; n > 0; n--)
	{
		t = p[m - 1];
		for (i = m - 2; i >= 0; i--)
			p[i + 1] = p[i];
		p[0] = t;
	}
}

#include
int main()
{
	void sort(int *p, int m, int n);
	int a[10];
	int i;
	int *p;
	p = a;
	for (i = 0; i < 10; i++)
		scanf_s("%d", p + i);
	sort(p, 10, 3);
	for (i = 0; i < 10; i++, *p++)
		printf("%d%c", *p, i < 9 ? ' ' : '\n');
	return 0;
}
方法五:
void sort(int a[], int b[], int m, int n)
{
	int i = 0, j = m - n;
	while (i < n)
		b[i++] = a[j++];
	j = 0;
	while (j < m - n)
		b[i++] = a[j++];
}

#include
int main()
{
	void sort(int a[], int b[], int m, int n);
	void(*p)(int a[], int b[], int m, int n);
	int i;
	int a[10], b[10];
	p = sort;
	for (i = 0; i < 10; i++)
		scanf_s("%d", &a[i]);
	(*p)(a, b, 10, 3);
	for (i = 0; i < 10; i++)
		printf("%d ", b[i]);
	printf("\n");
	return 0;
}

你可能感兴趣的:(C语言)