C语言 函数实现一维数组的元素交换顺序
背景
最近在做算法作业,要用C去实现,虽然内心是崩溃食xiang的,但还是抑制住了退课的冲动……这里记录一下一个小情景的实现。
要用C语言定义一个swap函数实现一维数组的元素交换顺序。因为涉及到数组、指针、函数传参这三个概念,所以保存一下警示自己。
主函数代码
#include<stdio.h>
#include <stdlib.h>
#define N 10
int main(void)
{
int i=0,List[N];
for(;i<N;i++)
List[i] = i;
/* swap函数 */
for(i=0;i<N;i++)
printf("List[%d]=%d\n",i,List[i]);
return 0;
}
函数代码1
void swap1(int *X,int i,int j)
{
int temp = X[i];
X[i] = X[j];
X[j] = temp;
}
这个swap1函数,X指针代表数组初始地址,调用的时候需要用数组名List来填入,后面i、j分别代表等待交换元素的下标。调用main的时候使用swap1(List,4,9);
来替代,执行效果:
函数代码2
void swap2(int *X, int *Y)
{
int temp = *X;
*X = *Y;
*Y = temp;
}
这个swap2函数,X指针代表数组第一个元素List[i]的地址,Y指针代表数组第二个元素List[j]的地址,调用main的时候使用直接取地址符:swap2(&List[4],&List[9]);
,执行效果一样不再展示。
同时使用
swap1(List,0,5);
swap2(&List[2],&List[9]);