数组的基础操作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组的基础操作相关的知识,希望对你有一定的参考价值。
一、数组的定义及使用
数组为相同类型的元素的集合,常用于存储较多数目的数字及字符串等。
- 例如定义十个整型变量,分别初始化为1,2,3,4,5,6,7,8,9,10;
//定义十个变量名,分别初始化;
int a = 1, b = 2, c = 3;//····过于繁复
//采用数组
int a[] = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10;
//变得简单好调用
数组的创建方式
type_t arr_name [const_n];
//type_t 指数组的类型
//[]内表示为常量。
数组的初始化
- 赋值初始化
int a[] = 1, 2, 3, 4, 5;//数组名为a,数据类型为整型,其中包含5个元素。
char b[] = hello;//数组名为b,数据类型为字符型,其中包含5个元素。
char c[] = "hello";//数组名为c,数据类型为字符型,其中包含6个元素h
//ello\\0(字符串以\\0作为结束标志)。
- 指定大小初始化
int a[10] = 0 ;//数组名为a,数据类型为整型,包含10个元素,全部初始化为0;
char b[10] = 0 ;//数组名为b,数据类型为字符型,包含10个元素,都为\\0,ASCII码值为0的字符。
使用
-
操作符 [ ]数组中的下标引用操作符。
-
大小计算
//运用sizeof计算
int sz = sizeof(a) / sizeof(a[0]);//sz为即为整型数组a的大小
- 运用操作符,使用下标修改其中的某一个值
a[0] = 1;//即将数组a中下标为0的元素值改为1。为数组a中第一个元素
二、数组的存储
数组在内存中连续存放,数组名即为数组中第一个元素的地址。因而便可以通过下标得以计算出每个元素的地址。
三、常见错误
- 二维数组的初始化
//二维数组的初始化,可省略行,但不可省略列
int a[][3] = 1,2,3,4,5,6;//表示2行3列的数组a
若省略列,则操作系统便不知道给每一个一维数组分配多少元素,从而导致歧义。
- 数组的传址调用
//数组的大小需在其定义的函数中计算,不可在其他函数中计算,如:
#include<stdio.h>
int test(int* a[])
int sz = sizeof(a)/sizeof(a[0]);
printf("test中计算大小为%d\\n", sz);
int main()
int a[10] = 0 ;
int sz = sizeof(a) / sizeof(a[10]);
printf("main中计算大小为%d\\n", sz);
test(a);
return 0;
函数结果为
由此可知,
- 在传参调用数组时,a仅作为数组首元素的地址被传至函数中,并不可表示数组整体;
- 调用函数时,由于a本身便是地址(指针变量),故也不需&符;
- 在以[下标]调用数组时,也会因为下标使用不当导致越界。
以上是关于数组的基础操作的主要内容,如果未能解决你的问题,请参考以下文章
fortran调用 带有参数 且 返回类型为数组的函数 及 相关歧义分析
fortran调用 带有参数 且 返回类型为数组的函数 及 相关歧义分析