标签:strlen 获取 ascii atoi 因此 img 编译 数组名 使用数组
程序中也需要容器,只不过该容器有点特殊,它在程序中是一块连续的,大小固定并且里面的数据类型一致的内存空间,它还有个好听的名字叫数组。
我们来看一下如何声明一个数组:
数据类型 数组名称[长度];
数组只声明也不行啊,看一下数组是如何初始化的。说到初始化,C语言中的数组初始化是有三种形式的,分别是:
补充:数组使用前必须先初始化他,否则如果对应内存上有值则会对使用造成影响 例如默认零值可以 使用类似 int test[xxx] = {}
我们将数据放到数组中之后又如何获取数组中的元素呢?
数组名称[元素所对应下标];
如:初始化一个数组 int arr[3] = {1,2,3};
那么arr[0]就是元素1
注意:
数组就可以采用循环的方式将每个元素遍历出来,而不用人为的每次获取指定某个位置上的元素,例如我们用for循环遍历一个数组:
注意以下几点:
由于C语言是没有检查数组长度改变或者数组越界的这个机制,可能会在编辑器中编译并通过,但是结果就不能肯定了,因此还是不要越界或者改变数组的长度
c语言获取数组长度
int length = sizeof(arr)/sizeof(arr[0]);
double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5}; const double * pd = rates; // pd指向数组的首元素 // 无论是使用指针表示法还是数组表示法,都不允许使用pd修改它所指向 数据的值。但是要注意,因为rates并未被声明为const,所以仍然可以通过 rates修改元素的值。另外,可以让pd指向别处: pd++; /* 让pd指向rates[1] -- 没问题 */
关于指针赋值和const需要注意一些规则。首先,把const数据或非const 数据的地址初始化为指向const的指针或为其赋值是合法的:
double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5}; const double locked[4] = {0.08, 0.075, 0.0725, 0.07}; const double * pc = rates; // 有效 pc = locked; //有效 pc = &rates[3]; //有效 然而,只能把非const数据的地址赋给普通指针: double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5}; const double locked[4] = {0.08, 0.075, 0.0725, 0.07}; double * pnc = rates; // 有效 pnc = locked; // 无效 pnc = &rates[3]; // 有效
const还有其他的用法。例如,可以声明并初始化一个不能指向别处的 指针,关键是const的位置:
double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5}; double * const pc = rates; // pc指向数组的开始 pc = &rates[2]; // 不允许,因为该指针不能指向别处 *pc = 92.99; // 没问题 -- 更改rates[0]的值 // 可以用这种指针修改它所指向的值,但是它只能指向初始化时设置的地 址。 // 在创建指针时还可以使用const两次,该指针既不能更改它所指 向的地址,也不能修改指向地址上的值: double rates[5] = {88.99, 100.12, 59.45, 183.11, 340.5}; const double * const pc = rates; pc = &rates[2]; //不允许 *pc = 92.99; //不允许
数组可以由整个数组当作函数的参数,也可以由数组中的某个元素当作函数的参数:
数组作为函数参数时注意以下事项:
C语言中,是没有办法直接定义字符串数据类型的,但是我们可以使用数组来定义我们所要的字符串。一般有以下两种格式:
注意:
printf(“%s”,字符数组名字);
或者puts(字符数组名字)
;。
常用的字符串函数如下(strlen,strcmp,strcpy,strcat,atoi):
使用字符串函数注意以下事项:
多维数组的定义格式是:
数据类型 数组名称[常量表达式1][常量表达式2]...[常量表达式n];
定义了一个名称为num,数据类型为int的二维数组。其中第一个[3]表示第一维下标的长度,就像购物时分类存放的购物;第二个[3]表示第二维下标的长度,就像每个购物袋中的元素。
多维数组的初始化与一维数组的初始化类似也是分两种:
多维数组初始化要注意以下事项:
Ps:二维数组定义的时候,可以不指定行的数量,但是必须指定列的数量
多维数组也是存在遍历的,和一维数组遍历一样,也是需要用到循环。不一样的就是多维数组需要采用嵌套循环
注意:多维数组的每一维下标均不能越界
标签:strlen 获取 ascii atoi 因此 img 编译 数组名 使用数组
原文地址:https://www.cnblogs.com/binHome/p/12763257.html