-
#include <iostream>
int func(int n){
if(n==1){
return 1;
}else{
return n+func(n-1);}
}
int main(){
int n=100;
int sum=func(n);
printf("sum=%d",sum);
return 0;
}
查看全部 -
for语句一定要加括号
查看全部 -
数组名是一个指向数组首元素的指针
查看全部 -
#include <stdio.h>
struct Student{
int math;
int english;
};
int main(){
struct Student stu[50];
stu[0].math=95;
stu[0].english=100;
printf("math=%d,english=%d",stu[0].math,stu[0].english);
return 0;
}
查看全部 -
数据类型转化
查看全部 -
%d 是一个占位符,表示这个位置实际上有一个数字printf("a:%d,b:%d",a,b);
scanf("%d, %d", &a, &b);(输入的两个值用逗号隔开)
查看全部 -
声明一个变量的时候,会随机一个默认值(可能是非法的),所以我们一般给变量附上一个默认值
查看全部 -
1这个 main 函数是程序的入口,一个程序里,有且只有一个 main 函数。程序从 main 函数开始执行,到 main 函数结束而终止。
2
我们来看看这个函数里其他的部分。
首先是 (int argc,char **argv) ,这是一个参数列表。我们可以看到,这里有两个参数,第一个参数argc表示参数个数,第二个参数argv是参数组,两个参数一起表达了这个程序的启动参数。
另外一个是return语句,我们可以看到 main 函数有一个返回值,这个返回表示程序的执行结果。我们这个 Hello Wolrd 程序里面,返回的是 0。0 表示程序执行成功,没有出现问题。如果这里返回的是非 0 ,那么表示程序执行出现问题。
查看全部 -
函数的参数值有两种类型,一种是直接的值拷贝,一种是指针指向地址相同。
1. 当参数是int、char等简单类型或者是struct类型时,在执行函数体之前,函数参数先进行声明后进行参数值拷贝。
2. 当参数是指针类型或者数组类型的时候,函数参数先声明指针变量,并把指针地址指向和传参指针相同的地址。以截图为例,执行函数体之前,p和q两个指针指向变量a的地址,在执行函数时q改变指向变量b的地址,但是p指向的地址没有发生变化,所以打印出来还是99。
查看全部 -
break: 直接退出当前循环,后面循环不再执行;
continue:结束本次循环,可以用来跳过某次循环,后面循环还会执行;
查看全部 -
do{}while()在宏定义经常使用到,因为对于宏体带有括号、分号的时候,进行宏替换可能会有意想不到的问题,导致程序未必能像预期一样执行。用do{}while(0)进行一层包裹,就能让宏定义无论在什么样的语法环境都能如预期一样执行。
查看全部 -
switch()括号里面只能是int类型,虽然也可以用char、short int类型,但是都会被隐式转换为int类型再进行case比较。case 也只能是int、char类型。
查看全部 -
数组名是一个指向数组首元素的常量指针
*arr指针变量指向数组的第一个元素的值
查看全部 -
枚举值只支持整数,其实也可以支持char字符类型,大概是因为char可以转为int。(这里用char会被隐式转为int,打印出来的结果是65,跟'A'比较为1,因为是转成统一类型再进行比较的)
查看全部 -
1.argc为整数
2.argv为指针的指针(可理解为:char **argv or: char *argv[] or: char argv[][] ,argv是一个指针数组)
注:main()括号内是固定的写法。
3.这是C/C++的一重要函数,叫主函数,执行函数的时候用。
无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数,程序执行时就是从这个函数进入的。
4、argc是命令行总的参数个数,argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数。
5、char *argv[]是一个字符数组,其大小是int argc,主要用于命令行参数argv[]参数,数组里每个元素代表一个参数。
查看全部
举报