1. 程式人生 > >C的奇技淫巧

C的奇技淫巧

如果 %s def 完全 逆序 函數 遞歸實現 -s r+

直接上代碼:

(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的奇技淫巧