c語言中swap問題小結

2022-04-08 23:57:52 字數 1133 閱讀 6088

#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...