-
函数的递归调用:在函数中调用自己
void func()
{
func();
}
递归调用的三要素:
在递归调用中要设置好终止条件
递归很适合层级调用关系,每一层都执行相同的操作,关键是要提取出递归调用的核心要素
递归调用的参数列表表示给下一层调用需要传递什么,返回值表示上一层调用需要返回什么
利用递归的特性,可以很简单得处理一些利用循环特别复杂的问题,例如,遍历文件夹,遍历二叉树等。
查看全部 -
1.作用:将函数体直接在调用处展开
2.优点:没有参数拷贝的过程,减少调用函数时的时间消耗
3.缺点:当一个函数过程要反复被调用时,不应定义为内联函数,因为每调用一次内联函数,就会展开一次代码,这样会使得代码体积迅速膨胀
4.内联函数实际上编译器会帮你决定到底是否作为内联函数
5.内联函数与宏定义的区别:宏定义是在预编译阶段就进行了,只是做了简单的文本替换,而内联函数不仅会在调用处展开代码,且该过程是在编译阶段进行,即编译器会对参数类型,返回值类型做检查
inline int add(int __a,int __b) { return __a+__b; } int main(int argc,char** argv) { int a = 5; int b = 6; int c = add(a,b); return 0; } //等效于 int main(int argc,char** argv) { int a = 5; int b = 6; int c = a+b; return 0; }
查看全部 -
利用递归的特性,可以很简单得处理一些利用循环特别复杂的问题,例如,遍历文件夹,遍历二叉树等。灵活使用递归,将带来极大的技术提升。
查看全部 -
参数传递(实参,形参),只是一个复制拷贝的过程,将实参赋值拷贝给形参,无论实参的数值还是地址。
查看全部 -
但是当要跳过的语句有好多行的时候,就会显得特别不方便。因此,我们可以尝试利用 do-while 语法来完成。
do {
if(a == 12){
break;
}
b = a + b;
} while(false);
b = a - b;这样,我们将 do-while 和 break 进行配合,完成一个和循环无关的程序结构。
查看全部 -
while 和 for 的用途也不太一样,for循环更适合循环次数比较确定的场景,例如数组遍历等,而while 循环更适合不确定循环次数不确定的场景。
查看全部 -
switch 接受了一个变量 s,然后使用 case 语句,判断变量 s 和哪个常量相等(case 后面只能是常量)
这就是 switch case 的特殊的地方,他在匹配到相应的 case 之后,会将后面所有的 case 从句都执行一次,直到碰到一个 break 语句。
查看全部 -
#include <stdio.h> int main(int argc,char **argv) { int a = 1; int b = 2; a =a^b; b = a^b; a= a^b; printf("a=%d,b=%d",a,b); return 0; }
查看全部 -
把数组初始化为非0值时,需要逐个赋值
查看全部 -
nullptr 是c++为描述空指针而提供的值,与NULL区别在于nullptr只能赋值给指针变量,NULL则可以赋值给整形等其他变量。两者相较而言NULL可能会造成一些潜在的问题
查看全部 -
(int argc,char **argv)
第一个参数argc表示参数个数
第二个argv是参数组
int main
retum中main函数有返回值,返回值为0成功。非0为失败
查看全部 -
用C++向世界问好
#include <stdio.h> //标准输入输出 int main(int argc,char **argv) //主函数,是程序的入口函数。一个程序里有且只有一个main函数 { printf("Hello World!\n"); //stdio.h中包含printf功能 return 0; }
C++
#include <iostream> //iostream是C++里的io流的头文件 int main(int argc,char **argv) { std::cout << "Hello World!\n" << std::endl;//C++的输出风格 return 0; }
查看全部 -
#include <stdio.h>
int main()
{
printf("int: %d\n",sizeof(int));
return 0;
}
查看全部 -
练习1:使用函数来交换两个数的值
#include <iostream> int exchange(int *a,int *b) { int c=*a; *a=*b; *b=c; } int main(int argc,char **argv) { int x=5; int y=10; std::cout<<"交换的前:"<<"x="<<x<<","<<"y="<<y<<std::endl; exchange(&x,&y); std::cout<<"交换后的:"<<"x="<<x<<","<<"y="<<y; return(0); }
练习2:利用递归来求一个数的阶乘
int fact(int n) { if(n==1) { return 1; } else { return n * fact(n-1); } } int main(int argc,char **argv) { int x = 5; int res = fact(x); std::cout<<"5!="<<res; return 0; }
查看全部 -
函数的递归调用:可以用来遍历文件夹,遍历二叉树。
查看全部
举报