循环语句
表达式1:循环变量的初始状态
表达式2:循环的判断条件
表达式3:循环变量的改变
1、for循环
for(表达式1;表达式2;表达式3)
{
循环体;
}
2、while循环
表达式1;
while(表达式2)
{
循环体;
表达式3;
}
3、do...while循环
表达式1;
do
{
循环体;
表达式3;
}while(表达式2);
函数:
(1)库函数
1)引入头文件
2)函数调用
变量 = 函数名(实际参数列表);
(2)自定义函数
1)函数声明
函数返回值类型 函数名(形式参数列表);
2)函数定义
函数返回值类型 函数名(形式参数列表)
{
函数体;
return 变量;
}
3)函数调用
变量 = 函数名(实际参数列表);
标识符:
(1)由数字字母和下划线组成
(2)不能由数字开头
(3)不能与关键字重名
关键字:32个 由系统定义的 全都是小写
数据类型(用于定义变量或类型):char double float int long short struct union void enum
signed unsigned
控制语句:break case continue default do else for goto if switch while
存储类型:auto register extern static
const:只读
return:结束函数
sizeof:求所占内存大小(单位是字节)
typedef:给已有类型取别名 typedef int sss;
volatile:防止编译器优化的
(4)见名知意
数组:用来保存一组数据类型相同数据的集合
数组的定义:数据类型 数组名[数组的长度];
数组的长度只能是常量
数据类型是数组里面每个元素的数据类型
//定义一个长度为5的int数组
int arr[5]; //arr的数据类型:int [5];
//定义一个长度为7的float数组
float brr[7]; //brr的数据类型:float [7];
部分初始化:未初始化的值为0
int arr[5]={1,2,3};
清空数组:int arr[5]={0};
全部初始化:全部初始化的时候可以省略掉数组长度不写
int arr[5]={1,2,3,4,5};
int arr[]={1,2,3,4,5};
int arr[5];
arr={1,2,3,4,5}; //error ,数组名实质上是一个地址,地址是常量
int arr[5];
arr[5]={1,2,3,4,5}; //error
int arr[]={0}; //没有意义
计算数组的长度:
(1) sizeof(arr)/sizeof(int)
(2) sizeof(arr)/sizeof(arr[0])
访问数组元素:数组名[下标] 下标必须从0开始
int arr[5] ; arr[0] ~ arr[4]
数组元素的输入输出:
for(int i=0;i<len;i++)
{
//scanf("%d",&arr[i]);
printf("%d ",arr[i]);
}
一维字符数组
//定义一个长度为20的char数组
char str[20] = {'a','b','c','d'};
char str[20] = "abcd"; sizeof(str)=20 strlen(str)<====>strlen(&str[0])=4
char str[] = "abcd"; sizeof(str)=5 strlen(str) = 4
char str[] = {'a','b','c','d'}; sizeof(str)= 4 strlen(str) = ?
字符串的特点:以\0作为结束标志
求字符串的长度:int len = strlen(字符串的首地址);
数组的输入输出:
for(int i=0;i<len;i++)
{
//scanf("%c",&arr[i]);
printf("%c",arr[i]);
}
%s---->字符串的格式控制符
printf("%s\n",字符串的首地址); printf("%s\n",str);
scanf("%s",字符串的首地址); scanf("%s",str);
指针:
指针的定义:数据类型 *指针变量名;
数据类型:指针所指向的变量的数据类型
int *p; //p是一个指针,指向一个int变量,p的值是一个Int变量的地址 指针P的数据类型:int *
在32位编译器下所有数据类型的指针都占4个字节
int i = 10,*p = &i; //p指向i
*p实质上就是I的一个别名,操作*p就是在操作i
* 在C语言中的三种用法:
(1)乘法
(2)指针的定义 int *p;
(3)取值运算符 *p; //*号前面由数据类型就是在定义指针,否则是在取值
野指针:没有具体指向一个合法的对象
int *a = NULL; //空指针
*a = 52;
操作空指针和野指针在C语言中都是不合法的
课后作业:
填空题:
1、设x为int型变量,执行以下语句,x=10; x+=x-=x-x; x的值为___20___
2、设x,y,z和t均为int型变量,执行以下语句:x=y=z=1; t=++x||(++y&&++z); 后x,y,z,t的值分别为__x=2,y=1,z=1,t=1_______
3、有一整型变量t,表达式t=1, t+5, t++的值是___2___
4、有一整型变量t,表达式t=(1, t+5, t++)的值是 ______ (t没有初始化,所以是随机值)
代码典型题目
第3题:用自定义函数实现数组元素的输入输出
参考:
#include <stdio.h>
//函数返回值类型:函数名(形参列表)
void output(int *arr,int len);
void output(int *arr,int len)
{
int i=0;
for(i=0;i<len;i++)
{
printf("%d ",*(arr+1));
}
)
int main()
{
int arr[5]={1,2,3,4,5};
output(arr,5);
}