数组的基础操作

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调用 带有参数 且 返回类型为数组的函数 及 相关歧义分析

C#零基础学习笔记004-数组

JS基础(数组的方法)

json 使用json:api进行旁设,使用`method`可以消除操作的歧义

自然语言处理(NLP)入门