背景
最近在做算法作業,要用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]);