1.数组
<类型> 变量名称[元素数量]
元素数量必须是整数例如:int grades[100]
(我们需要主动初始化数组)-数组是一种容器,特点是:其中所有的元素具有相同的数据类型;一旦创建,不能改变大小;
数组中的元素在内存中是连续依次排列的;
数组的每个单元就是数组类型的一个变量
使用数组时放在[ ]中的数字叫做下标或索引,下标从0开始计数
例子:输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束```cint main(){ int i; int num[10]={0}; scanf("%d",&i); while(i!=-1){ if(i>=0&&i<=9){ num[i]++; } scanf("%d",&i); } for(i=0;i<10;i++) { printf("%d出现了%d次\n",i,num[i]); } return 0;}```
2.函数的定义和使用
函数是一块代码,接受零个或多个参数,做一件事情,并返回零个或一个值。
函数定义:
函数头:返回类型 函数名称(参数表)
函数主体:包括一组定义函数执行任务的语句调用函数 函数名(参数值)
()起到了表示函数调用的重要作用
即使没有参数也需要()
如果有序数,则需要给出正确的数量和顺序- 这些值会被按照顺序依次用来初始化函数中的参数
从函数中返回值
return停止函数的执行,并送回一个值
return;
return 表达式;
一个函数可以出现多个return语句(不好,但可以这么做)
没有返回值的函数
- void 函数名(参数表)
- 不能使用带值的return
- 可以没有return
- 调用的时候不能做返回值的赋值
3.函数的参数和变量
函数声明会告诉编译器函数名称及如何调用函数。函数的实际主体可以单独定义。
函数声明包括以下几个部分:
返回类型 函数名称(参数表) ;
当您在一个源文件中定义函数且在另一个文件中调用函数时,函数声明是必需的。在这种情况下,您应该在调用函数的文件顶部声明函数。
参数传递
调用函数- 如果函数有参数,调用函数时必须传递给它数量、类型正确的值。
可以传递给函数的值是表达式的结果,这包括: - 字面量
- 变量
- 函数的返回值
- 计算的结果
传值
- 每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系
- 过去,对于函数表中的参数,叫做形式参数,调用函数时给的值,叫做实际参数(现在不咋用)
- 我们认为他们是参数和值的关系
本地变量
- 定义在函数内部的变量就是本地变量
- 参数也是本地变量
本地变量的规则
- 本地变量定义在块内(块就是大括号)
- 生存期和作用域在大括号内
- 不能在一个块内定义同名变量
- 本地变量不会初始化
- 参数在进入函数时会被初始化void swap( )尽量不要这样写,如果没有参数,可以写成void swap(void)
- 调用函数时的圆括号里的逗号是标点符号,不是运算符
- f(a,b) 这里的逗号为标点符号 f((a,b))这里的逗号为运算符
C语言不允许函数嵌套定义
数组的大小- sizeof给出整个数组所占据的内容的大小,单位是字节sizeof(a)/sizeof(a[0])
数组的赋值
数组变量本身不能被赋值
要把一个数组的所有元素交给另一个数组,必须采用遍历