基本结构变形
int i = 0;
for(;表达式2; 表达式3)
{
语句块;
}
int i = 0;
for(;表达式2; )
{
语句块;
表达式3;
}
for( ;; ) // 死循环
{
if(表达式2)
{
语句块;
表达式3;
}
else
{
break;
}
}
定义循环变量并赋值;
while(判断条件) // 表达式
{
语句块;
// 循环完成之后需要改变定义变量的值
增值或减值语句;
}
首先定义循环变量并赋值,然后判断是否符合条件,如果符合就进入循环执行语句块及增值减值语句,然后继续判断,直到判断条件不成立退出循环
定义循环变量并赋值;
do
{
语句块;
增值减值语句;
} while(终止条件);
先执行后判断
死循环:
for( ;; ){};
while(1){};
// 让程序卡死在这等
while(1);
break:直接结束循环
continue:结束本次循环,继续下一次循环
具有一定顺序的若干变量的集合
存储类型 数据类型 数组名[元素的个数];
int arr[5];
数组名:代表数组首元素的首地址,arr地址常量,不能为左值,不能被赋值
数组名[下标]; 下标是从零开始
访问第一个元素:arr[0];
访问第n个元素:arr[n-1];
注意数组越界问题
数组名[下标]; 下标是从零开始
访问第一个元素:arr[0];
访问第n个元素:arr[n-1];
注意数组越界问题
1)数据类型相同
2)内存连续
1.数组的数据类型就是数组元素的数据类型
2.数组名要符合标识符的命名规则
3.在同一函数中,数组名不要与变量名相同
int arr[5];
int arr; // 错误,在同一函数中,这样不被允许
4.下标从0开始,到 n-1 结束
一维数组、二维数组
存储类型 数据类型 数组名[元素个数];
数组名[下标]; 下标从0开始
定义数组的同时全部初始化
int arr[5] = {1, 2, 3, 4, 5};
int arr[5] = {1, 2}; // 1 2 0 0 0
未初始化的元素值为0
随机值,需要单个元素赋值
int arr[5]; // 随机值
1)可以全部初始化:
int arr[5] = {0 , 0 , 0, 0, 0};
2)可以部分初始化:
int arr[5] = {0};
3)这样也可以:
int arr[5] = {};
1.先定义后引用
2.每次只能引用一个数组元素arr[i],如果想要引用所有元素可以使用循环遍历
3.引用时防止数组越界,有时编译器不会报错
4.打印数组元素的地址用 %p 格式
printf(“%p\n”, arr[i]); arr[i] 是变量,不能以%p的格式打印,需要加取地址符 &
printf(“%p\n”, &arr[i]);
把数组下标作为循环变量,用 for 循环遍历
计算数组的大小:
#include
void bzero(void *s, size_t n);
功能:内存空间设置为零
参数:s:要清空的空间的首地址
n:字节大小
返回值:无
#include
void *memset(void *s, int c, size_t n);
功能:将内存空间设置为0
参数:s:要清空的空间的首地址
c:要设置的值,设置为0
n:字节大小
返回值:要清空的空间的首地址
字符数组可以存放字符串
元素的数据类型为字符型的数组
char str[] = {‘a’, ‘b’, ‘c’}; // sizeof(str) == 3
char str[] = {“hello”}; // sizeof(str) == 6
char str[] = “hello”; // sizeof(str) == 6
char str[32] = “hello” // sizeof(str) == 32
char str[3];