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()循环。你就会发现他的妙处。 

猜你喜欢

转载自www.cnblogs.com/hukblog/p/9885886.html