栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言实现数组与指针的结合以及分清*p++、 *++p、++(*p)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言实现数组与指针的结合以及分清*p++、 *++p、++(*p)

指针与数组的结合(用冒泡法对数组数据进行由大到小的顺序排序)

//用冒泡法对数组数据进行由大到小的顺序排序
int main()
{
	int BS(int* p, int n);
	int a[] = { 1,2,3,4,5,6,7,8,9 };
	int n = sizeof(a) / sizeof(a[0]);
	BS(a, n);
	for (int m = 0; m < n; ++m)
		printf("%d ", a[m]);
}
int BS(int *p, int n)
{
	for (int i = 0; i < n - 1; ++i)
	{
		for (int j=0; j < n - 1 - i; ++j)
		{
			if (*(p + j + 1) > *(p + j))
			{
				int temp = *(p + j);
				*(p + j) = *(p + j + 1);
				*(p + j + 1) = temp;
			}
		}
	}
}

 指针与数组的结合(将数组中n个整数按相反的顺序存放)

代码(一)

//将数组中n个整数按相反的顺序存放
int main()
{
	int inv(int* p, int n);
	int a[] = { 1,2,3,4,5,6,7,8,9 };
	int n = sizeof(a) / sizeof(a[0]);
	inv(a, n);
	for (int m = 0; m < n ; ++m)
		printf("%d ", a[m]);

}
int inv(int* p, int n)
{
	int* i = p;
	int* j = p + n - 1;
	while (i < j)
	{
		int temp = *i;
		*i = *j;
		*j = temp;
		i++; j--;
	}
}

 代码(二)

int main()
{
	int a[] = { 1,3,4,5,6,8,9 };
	int n = sizeof(a) / sizeof(a[0]);
	int* i = a;
	int* j = a + n-1;
	while (i < j)
	{
		int temp = *i;
		*i = *j;
		*j = temp;
		i++; j--;
	}
	for (int m = 0; m < n; ++m)
		printf("%d ", a[m]);
	return 0;
}

 代码(三)

int main()
{
	int inv(int a[], int n);
	int a[]={1,2,3,4,5,6,7};
	int n = sizeof(a) / sizeof(a[0]);
	inv( a,  n);
	for (int i = 0; i < n; ++i)
		printf("%d ", a[i]);
}
int inv(int a[],int n)
{
	int left = 0;
	int right = n - 1;

	while (left < right)
	{
		int temp = a[left];
		a[left] = a[right];
		a[right] = temp;
		left++; right--;
	}
}

指针与数组的结合(将数组中n个整数按打印)

在这里我们要分清*p++、 *++p、++(*p)

*p++是先取*p的值,然后是p加一。
 *++p是先给p加一,然后取*p的值。 

++(*p)是给p所指元素加一。

代码(一)

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int* p;
	p = &arr;
	int i = 0;
 for (i = 0; i < 10; ++i)
		printf("%d", *p++);
}


 代码(二)

//用指针p指向数组元素,通过改变指针变量的值,使p先后指向a[0]~a[9]各元素
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 };
	int* p;
	p = &arr;
	int i = 0;

	for for(i=0;i<10;++i,++p)
		printf("%d", *p);
}

代码(三)

//用指针变量指向数组
int main()
{
	int a[10]={1,2,3,4,6,7,8,9,0,1,2};
	int* p;
	for (p = a; p < (a +10); ++p)
	{
		printf("%d", *p);
	}
	return 0;
}

代码(四)

//通过数组名计算数组元素地址,找出元素的值
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,0}
	for (int i = 0; i < 10; ++i)
	{
		printf("%d", *(a+i));//(a+i)是数组中序号为i的元素的地址,*(a+i)是该元素的值。
	}
	printf("n");
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968410.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号