#include
#include
void swap1(int x,int y)
int temp;
temp=x;
x=y;
y=temp;
void swap2(int *x,int *y)
int *temp;
temp=x;
x=y;
y=temp;
void swap3(int *x,int *y)
int temp;
temp=*x;
*x=*y;
*y=temp;
void swap4(int a,int b)
int temp;
temp=a[0];
a[0]=b[0];
b[0]=temp;
void swap5(int a,int b)
int temp;
temp=*a;
*a=*b;
*b=temp;
int main()
int x,y;
x=4;
y=3;
swap1(x,y);
printf("swap1: x:%d,y:%d\n",x,y);//形參傳值,不能交換,實際傳過去是拷貝的乙份,沒改變主函式中x,y
swap2(&x,&y);
printf("swap2: x:%d,y:%d\n",x,y);//不能交換,函式中只是位址交換了下,位址指向的內容沒有交換
swap3(&x,&y);
printf("swap3: x:%d,y:%d\n",x,y);//能交換,位址指向的內容進行了交換
swap4(&x,&y);
printf("swap4: x:%d,y:%d\n",x,y);//能交換,位址指向的內容進行交換
swap5(&x,&y);
printf("swap5: x:%d,y:%d\n",x,y);//能交換,位址指向的內容進行交換
return 0;
swap1: x:4,y:3
swap2: x:4,y:3
swap3: x:3,y:4
swap4: x:4,y:3
swap5: x:3,y:4
摘自 無聊中的部落格
C語言中記憶體對齊小結
一 什麼是對齊,以及為什麼要對齊 1.現代計算機中記憶體空間都是按照byte劃分的,從理論上講似乎對任何型別的變數的訪問可以從任何位址開始,但實際情況是在訪問特定變數的時候經常在特定的記憶體位址訪問,這就需要各型別資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這就是對齊。2.對齊的作...
C語言中對於交換函式(SWAP)的編寫
乙個函式想修改另乙個函式的值,必須做到兩點 1.傳指標 2.解引用 正確 void swap int p1,int p2 錯誤示範1 未傳指標造成無法交換 void swap err1 int a,int b 錯誤示範2 未解引用造成無法交換 void swap err2 int p1,int p2...
C語言中實現模板函式小結
如果要寫個函式支援多種資料型別,首先想到的就是c 的模板了,但是有時候只能用c語言,比如在linux核心開發中,為了減少 量,或者是某面試官的要求 考慮了一陣子後,就想到了qsort上.qsort的函式原型 void qsort void base,size t num,size t width,i...