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的奇技淫巧的主要内容,如果未能解决你的问题,请参考以下文章