C的奇技淫巧

Posted hukblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C的奇技淫巧相关的知识,希望对你有一定的参考价值。

直接上代码:

(1).交换两参数的值

#include <stdio.h>

int main()
{
    int a = 10,b = 5;

    a^=b^=a^=b;  
            
    printf("a=%d,b=%d ",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 ",&M["12asd"]);
      return 0;
}  

 

   输出的答案是  "sd";

  1."12asd"是一个指针;  2.a[5] 完全等价于 5[a],3. 如果我们把 "12asd"看成是 指针 p 的话,我们就可以把

&M["12asd"]看成是一个  &p[2] ,直接跳过第一个字符‘12‘和第二个字符‘a‘,所以应该输出"sd"。


4.do......while()的妙用

#include <stdio.h>
#define FUN(a,b)  do{printf("%d ",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的奇技淫巧的主要内容,如果未能解决你的问题,请参考以下文章

C语言的奇技淫巧(1-50)

js-ifelse-奇技淫巧

电脑操作的“奇技淫巧”

奇技淫巧第二期

acm竞赛中有啥奇技淫巧 进制转换

从解决Cocos2dx-2.x arm64 Crash 来看C的奇技淫巧