函数的调用
·传值调用:函数的形参和实参分别占用不同内存块,修改形参不影响实参。得到结果即可
·传址调用:把函数外部创建变量的内存地址传递给函数参数。改变结果
在参数传递时,实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配的错误。
三目运算符
表达式1 ? 表达式2 : 表达式3;
先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。
do-while
do
{
执行代码块
}while(表达式);
它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
获得一个数的百位,十位和个位
百位数:num/100
十位数:num%100/10
个位数:num%10
在没有循环结构的情况下,break不能用在单独的if-else语句中。
在多层循环中,一个break语句只跳出当前循环。
switch循环语句
switch(表达式)
{
case 常量表达式1: 执行代码块1 break;
...
case 常量表达式n: 执行代码块n break;
default: 执行代码块n+1;
}
switch语句时应注意以下几点:
在case后的各常量表达式的值不能相同,否则会出现错误。
在case子句后如果没有break;会一直往后执行**一直到遇到break;**才会跳出switch语句。
switch后面的表达式语句只能是整型或者字符类型。
在case后,允许有多个语句,**可以不用{}**括起来。
各case和default子句的先后顺序可以变动,而不会影响程序执行结果。
default子句可以省略不用。
switch语句通过将表达式的值与常量值进行比对,如果相等则执行后面的语句,如果不相等则跳到下一个case语句,当表达式和常量值相等,switch语句会将当前case语句以及后面所有的case语句全部输出。
&&:与
||:或
void
函数中如果有return
语句,该语句**只能起到结束函数运行的功能。**其格式为: return;
1.15 看到递归
递归函数
递归就是一个函数在它的函数体内调用它自身。
递归函数必须有结束条件
静态存储方式:是指在程序运行期间分配固定的存储空间的方式。静态存储区中存放了在整个程序执行过程中都存在的变量,如全局变量。
动态存储方式:是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储区中存放的变量是根据程序运行的需要而建立和释放的,通常包括:函数形式参数;自动变量;函数调用时的现场保护和返回地址等。
C语言中存储类别又分为四类:
- 自动(auto)、
- 静态(static)、
- 寄存器的(register)
- 外部的(extern)
1.用关键字auto定义的变量为自动变量,auto可以省略,auto不写则隐含定为“自动存储类别”,属于动态存储方式。
auto int a;
2.用static修饰的为静态变量,如果定义在函数内部的,称之为静态局部变量;如果定义在函数外部,称之为静态外部变量。
static int a;
3.“寄存器变量”,用关键字register作声明。
register int a;
局部静态变量不能定义为寄存器变量。
4.用extern声明的的变量是外部变量,某函数可以调用在该函数之后定义的变量、
int main()
{
extern int a;
printf("extern a = %d\n",a);
}
int a = 100;
内部函数和外部函数
- 在C语言中不能被其他源文件调用的函数称谓内部函数 ,内部函数由static关键字来定义,因此又被称谓静态函数,形式为:
static [数据类型] 函数名([参数]) - 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。
- 在C语言中能被其他源文件调用的函数称谓外部函数 ,外部函数由extern关键字来定义,形式为:
extern [数据类型] 函数名([参数]) - 在没有指定函数的作用范围时,系统会默认认为是外部函数,因此当需要定义外部函数时extern也可以省略。
数组
C语言中的数组初始化是有三种形式的,分别是:
数据类型 数组名称[长度n] = {元素1,元素2…元素n};
数据类型 数组名称[] = {元素1,元素2…元素n};
数据类型 数组名称[长度n]; 数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;
注意:
- 数组在初始化的时候,数组内元素的个数不能大于声明的数组长度;
- 元素个数小于数组的长度时,多余的数组元素初始化为0;
C语言并不提供计算数组长度的方法。
数组的遍历:
int arr[3] = { 1,2,3 };
int i;
int main(void)
{
for (i = 0;i < 3;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
- 最好避免出现数组越界访问,循环变量最好不要超出数组的长度.
- C语言的数组长度一经声明,长度就是固定,无法改变
c语言获取数组长度
int length = sizeof(arr)/sizeof(arr[0]);
//1.16 看到数组的应用
在C语言中,没有办法直接定义字符串的数据类型,但是可以利用数组来定义。
格式1:char 字符串名称[长度] = “字符串值”;
格式2:char 字符串名称[长度] = {‘字符1’,‘字符2’,‘字符3’,‘\0’};
注意:
[]中的长度是可以省略不写的;
采用第2种方式的时候最后一个元素必须是’\0’,’\0’表示字符串的结束标志;
采用第2种方式的时候在数组中不能写中文;
在输出字符串的时候要使用:printf(“%s”,字符数组名字);
或者puts(字符数组名字)
\\1.17看到多维数组