关于循环语句:while语句和for语句大致相同,根据习惯而定。
while语句格式:while(表达式)
语句
for语句格式:for(初始化步骤,控制表达式,每次循环的最后被执行)\\For语句的执行步骤是,首先执行表达式1进行初始化,然后判断表达式2的值是否为真,若为真,则再次执行循环体和表达式3,依次循环直到表达式2的值为0为止。
数组
数组的简介:c语言中的数组每个值都必须具有相同的type,必须要始终指定数组大小。C语言没有提供开箱即用的动态数组,必须使用数据结构。
用常量来定义大小,再在定义时初始化数组。例如:int price[5] = {1,2,3,4,5,};当{}中的值少于元素个数时,只给前面 部分元素赋值,后面的元素默认为0值。
也可以在定义之后分配一个值。或者更实际直接使用循环。并且可以在数组变量名称之后使用方括号,并添加一个整数以确定索引值,从而引用数组中的项。//数组索引从零开始。
C语言的中的数组特点在于数组所有的元素都按顺序储存(在内存中是连续存放的)。并且例如上面的price,就是指向数组第一个元素的指针,因此可以像普通指针一样使用。
数组的创建方式:type-t arr-name【const-n】const-n是常量表达式,用来指定数组大小。//数组创建【】里必须给常量,不能是变量。
数组的初始化是指在创建数组的同时给数组的内容一些合理的初始化值。
一维数组的使用,【】,下标操作符。其实就是数组访问的操作符。数组是使用下标来访问的,下标是从0开始。数组的大小可以通过计算得到。
区分char arr1[] = "abc" 和 char arr2[3] = {'a','b','c'}; 内存中的分配区别
strlen和sizeof没有什么关联,strlen是求字符串长度的-只能针对字符串求长度-库函数-得使用头文件,sizeof计算变量,数组,类型得大小-单位是字节-操作符
二维数组
例如int arr【3】【4】={0}
二维数组在内存中的存放。
#include<stdio.h>;
int main(){
int arr[3][4];
int i = 0;
for(i=0;i<3;i++) {
int j = 0
for (j=0; j<4:j++){
printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
}
}
return 0;,
}
其实二维数组在内存中也是连续存放的
与一维数组的定义唯一不同的是多了一个常量表达式2.通常在处理二维数组的时候,为了方便理解,都将数组视为一个矩阵,常量表达式1视为矩阵的行数,2视为矩阵的列数
例如arr[4][3]视为一个整型一维数组,其中包含四个元素arr[0],arr[1],arr[2],arr[3],每个元素都是int[3]类型的,也就是说,每个元素又是一个一维数组,每个一维数组含有3个元素如arr[0]有arr[0][1].arr[0][2],arr[0]03]三个元素
数组越界
数组下标有范围限制,如果有n个元素,下标从0开始,最后一个元素下标就是n-1,不在这范围内的都是数组越界,写程序时要自行检查有没有数组越界的现象
数组名是首字母的地址(两个除外)
sizeof(数组名),计算整个数组的大小,sizeof内部单独放一个数组名,数组名表示整个数组。
&数组名,取出的是数组的地址。&数组名,数组名表示整个数组。
sizeof求数组长度,只有在定义数组的那一个函数中,才可以求数组长度。如果是别的函数调用,就是指针,只能求一个元素的长度。