函数
void swap(void){
int a=1;
printf("%d\n",a);
}
int swap(void){
int a=1,b;
b=a;
printf("%d\n",a);
return b;
}
看一下上述的代码,写了两个函数,理解一点,有返回就要在函数的开始注明返回的类型,如果没有返回值,直接写一个void就行。
另外有关函数的关注一下static和const这两个关键字
const修饰的是函数的返回值,比如
const int swap()
主要作用有以下几点:
1、预编译指令只是对值进行简单的替换,不能进行类型检查
2、可以保护被修饰的东西,防止意外修改,增强程序的健壮性
3、编译器通常不为普通const常量分配存储空间,而是将它们保存在符号表中,这使得它成为一个编译期间的常量,没有了存储与读内存的操作,使得它的效率也很高。
#include <stdio.h>
static void swap(){
static int a=1;
printf("%d\n",a);
a++;
}
int main(){
swap();
swap();
return 0;
}
输出结果为1,2
第一个最后a++的结果a=2,静态变量第一次初始化后,第二次就不用再进行初始化了,而是直接使用第一次结果的值。
控制流
if-else和switch语句略过,后面的很容易就能理解的都如此,略过处理,着重讲一下goto语句,do-while语句,while循环for循环以及continue与break的区别
goto
先看goto语句吧,没事尽量少用,毕竟跳来跳去的到时候有问题了很难找到问题出在哪,我说的少用是用几个就行,而不是不用,用十多个就有点懵了。怎么用:goto XXX;然后在函数某个地方写上这个标记,XXX:语句,这就OK了。
do-while
看名字就能明白,先运行语句,再判断
#include <stdio.h>
int main(){
int a=1;
do{
a++;
}while(a<9);
printf("%d\n",a);
return 0;
}
一个简单的程序,判断a是否小于9,如果是的话继续循行do中的语句
while
#include <stdio.h>
int main(){
int a=1;
while(a<9){
a++;
}
printf("%d\n",a);
return 0;
}
for
#include <stdio.h>
int main(){
int i,j=0;
for(i=0;i<9;i++){
j++;
}
printf("%d\n",j);
return 0;
}
上面的循环很简单,本来没必要写,但是涉及到重要的两个循环控制break以及continue语句,break,表示中断直接跳出循环,continue表示的是跳过本次,但是循环依然继续,看一个程序
#include <stdio.h>
int main(){
int i,j=0;
for(i=0;i<9;i++){
j++;
if(j==6){
break;
}
printf("%d\n",j);
}
return 0;
}
输出结果为:12345,不包括6,直接就中断循环了
那如果把break换成continue呢,我们试一下:
#include <stdio.h>
int main(){
int i,j=0;
for(i=0;i<9;i++){
j++;
if(j==6){
continue;
}
printf("%d\n",j);
}
return 0;
}
输出结果为:12345789,同样不包括6,也就是说6是跳过的,但是循环还在继续,后续依次输出789,这就是break和continue的区别。