C的奇技淫巧
直接上代碼:
(1).交換兩參數的值
#include <stdio.h>
int main()
{
int a = 10,b = 5;
a^=b^=a^=b;
printf("a=%d,b=%d\n",a,b);
return 0;
}
//輸出結果 a = 5,b = 10;
(2).遞歸實現字符串逆序輸出#include <stdio.h>
#include<stdio.h>
void fun(char *str)
{
if(*(str+1)){
fun(str);
printf("%c",*str);
}
}
int main()
{
char *p = "hello world";
fun(p);
return 0;
}
這就是利用遞歸函數實現的字符串逆序輸出。
3.數組與指針
#include <stdio.h>
#define M 2
int main()
{
printf("%s\n",&M["\012asd"]);
return 0;
}
輸出的答案是 "sd";
1."\012asd"是一個指針; 2.a[5] 完全等價於 5[a],3. 如果我們把 "\012asd"看成是 指針 p 的話,我們就可以把
&M["\012asd"]看成是一個 &p[2] ,直接跳過第一個字符‘\012‘和第二個字符‘a‘,所以應該輸出"sd"。
4.do......while()的妙用
#include <stdio.h>
#define FUN(a,b) do{printf("%d\n",a);a++}while(b>a)
int main()
{
int x = 2,y = 10;
FUN(x,y);//你可以嘗試著把do...while(),修改成while(),或者修改成for()循環。你就會發現他的妙處。
return 0;
}
你可以嘗試著把do...while(),修改成while(),或者修改成for()循環。你就會發現他的妙處。
C的奇技淫巧