-
2021-05-22 16:52:23
C语言一维数组的定义和引用
C语言一维数组的定义和引用
在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。在C语言中,数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。本章介绍数值数组和字符数组,其余的在以后各章陆续介绍。
7.1一维数组的定义和引用
7.1.1一维数组的定义方式
在C语言中使用数组必须先进行定义。一维数组的定义方式为:类型说明符 数组名 [常量表达式];
其中:类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符。方括号中的常量表达式表示数据元素的个数,也称为数组的长度。
例如:
int a[10]; 说明整型数组a,有10个元素。
float b[10],c[20]; 说明实型数组b,有10个元素,实型数组c,有20个元素。 char ch[20]; 说明字符数组ch,有20个元素。
对于数组类型说明应注意以下几点:
数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
数组名的书写规则应符合标识符的书写规定。
数组名不能与其它变量名相同。
例如:
main()
{
int a;
float a[10];
……
}
是错误的。
方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有 5个元素。但是其下标从0开始计算。因此5个元素分别为a[0],a[1],a[2],a[3],a[4]。
不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。 例如:
#define FD 5
main()
{
int a[3+2],b[7+FD];
更多相关内容 -
C语言编程技术实践-2020版、C语言编程技术实践 一维数组、一维数组中元素的引用 一维数组元素的引用方法....
2020-10-14 20:34:32一维数组元素的引用方法主讲人李刚目录1一维数组元素引用实例演示2一维数组元素引用的格式3一维数组元素引用的举例1 一维数组元素引用实例演示1. 一维数组元素引用实例演示实例介绍影院座位连续人员调动内存空间连续... -
php实现给二维数组中所有一维数组添加值的方法
2020-12-18 20:39:26本文实例讲述了php实现给二维数组中所有一维数组添加值的方法。分享给大家供大家参考,具体如下: 给二维数组中所有的一维数组添加值(索引和关联) $shop = array( 0=>array(0=>1,1=>2,2=>3,3=>4) ,1=>array(0=>1,... -
C++ 二维数组参数传递的实现方法
2020-12-31 02:33:10我定义了这样一个数组,我想把这个数组作为参数,传递到一个函数中,并要在函数中能引用该二维数组的元素,我该怎么做? 第一种方式是直接传递二维数组,但是必须标明第二维的值,因为如果只是传递a[][],编译器... -
C语言程序设计 数组一(一维数组相关).ppt
2020-06-25 21:28:45第九讲 数组之一 一维数组的定义及排序算法 一 数组和数组元素 一 数组和数组元素 二一维数组的定义与引用 1一维数组的定义 二一维数组定义和使用 2一维数组的引用 数组必须先定义后使用而且只能引用数组元素而不是... -
Matlab中数组元素引用——三种方法
2021-04-21 13:47:451.Matlab中数组元素引用有三种方法1.下标法(subscripts)2.索引法(index)3.布尔法(Boolean)注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维...1.Matlab中数组元素引用有三种方法
1.下标法(subscripts)
2.索引法(index)
3.布尔法(Boolean)
注意:在使用这三种方法之前,大家头脑一定要清晰的记住,Matlab中数组元素是按列存储(与Fortran一样),比如说下面的二维数组
A=
8 1 6
3 5 7
4 9 2
Matlab的存储顺序是8,3,4,1,5,9,6,7,2,也就是说先行后列,对于3维数组呢,就是先行后列再页对应个元素的索引和下标分别为
Element Index Subscripts
8 1 (1,1)
3 2 (2,1)
4 3 (3,1)
1 4 (1,2)
5 5 (2,2)
9 6 (3,2)
6 7 (1,3)
7 8 (2,3)
2 9 (3,3)
从上面的例子中已经很清晰的说明了下标和索引的区别了,也就是说Matlab为每个元素分配了一个唯一识别的ID(即index)
2.下标法引用A(ii,jj):其中ii和jj可以是一维向量、标量、“:”号或者“end”大家对下标估计比较熟悉,由于在C语言中接触过,但是我这里需要强调的是,Matlab的下标是可以多行多列同时引用的,而像C语言等一次只能引用一个,比如
A(2:3,3:-1:1)表示引用数组中的2~3行,3~1列对应的元素
A(:,end)表示引用最后一列元素,“:”表示所有列或行,“end”表示最后一列或列,“end-n”表示倒数第n行或列
A(1,end-1)表示引用第1行倒数第2个元素
A([2 1 3 3],[1 1 2 2 1])表示引用按两个向量引用指定的元素,即A中的第2,1,3,3行和第1,1,2,2,1列对应的元素
举几个例子:
>>A=magic(3)
A =
8 1 6
3 5 7
4 9 2
>>A(2:3,3:-1:1)
ans =
7 5 3
2 9 4
>>A(:,end)
ans =
6
7
2
>>A(1,end-1)
ans =
1
>>A([2 1 3 3],[1 1 2 2 1])
ans =
3 3 5 5 3
8 8 1 1 8
4 4 9 9 4
4 4 9 9 4
2.索引法引用(说白了索引就是存储顺序)
A(index):index可以是任意的数组,index的元素必须是正整数,且不大于numel(A),返回的是一个尺寸与index一样的数组
下标和索引之间可以通过ind2sub和sub2ind函数相互转换,具体可以看帮助,很简单
[I,J] = ind2sub(siz,IND)
IND = sub2ind(siz,I,J)
还有使用A(:)就可以将数组A转换为列向量
A(8):表示引用A的第8个元素
B=A([1 10 5 2 2 1 3]):表示依次引用A的第1,10,5,2,2,1,3个元素,返回与index尺寸相同的数组,也就是说size(B)=size(index)
A([2 5 9;1 1 1;8 5 6]):返回的时侯是一个3*3的矩阵
>>A=magic(5)%括号中为索引值
A =
17 (1) 24 (6) 1 (11) 8 (16) 15 (21)
23 (2) 5 (7) 7 (12) 14 (17) 16 (22)
4 (3) 6 (8) 13 (13) 20 (18) 22 (23)
10 (4) 12 (9) 19 (14) 21 (19) 3 (24)
11 (5) 18 (10) 25 (15) 2 (20) 9 (25)
>>A(8)
ans =
6
>>A([1 10 5 2 2 1 3])
ans =
17 18 11 23 23 17 4
>>A([2 5 9;1 1 1;8 5 6])
ans =
23 11 12
17 17 17
6 11 24
3.布尔法引用
A(X):X是一个有0和1组成布尔型数据,且size(A)=size(X),对应位置为1则留下该数据,0则去掉,最后按A中的存储顺序,返回一个列向量
假如说A是3*3的数组
A(logical([1 0 0;0 1 0;0 0 1])):表示引用了数组A的对角线元素,注意必须使用logical将0/1数组转换为布尔型
>>A=magic(3)%生成一个3*3的数组
A=
8 1 6
3 5 7
4 9 2
>>x=logical([1 1 0;0 1 1;1 0 1])%将double转化为boolean型数据
x =
1 1 0
0 1 1
1 0 1
>>A(x)%引用对应位置为1的数据,返回列向量
ans =
8
4
1
5
7
2
>>x=A>5%是有了比较语句,返回布尔型数据,对应位置数据大于5的为1,否则为0
x =
1 0 1
0 0 1
0 1 0
>>A(x)%返回大于A中大于5的元素,其实该命令可以一次性执行A(A>5)或者find(A>5),前者返回具体元素,后者返回大于5的数据的索引值
ans =
8
9
6
7
>>A(A>5)%一次性执行上面的命令
ans =
8
9
6
7
>>indx=find(A>5)%查找A中对于5的元素,返回它们的索引(index)值,此时我们可以通过A(index)返回具体的元素
index =
1
6
7
8
-
第80节 二维数组元素的引用
2021-05-25 22:10:35一、二维数组元素由其行、列下标决定 以float a[3][4];为例: 1.引用a[2][3]—行、列下标均是整数 2.引用a[2-1][2*2-1]—行、列下标可以是整型表达式 3.a[1][2]=3.14/2;—数组元素作为赋值表达式的左值 4.a[3][4]=15...一、二维数组元素由其行、列下标决定
以float a[3][4];为例:
1.引用a[2][3] — 行、列下标均是整数
2.引用a[2-1][2*2-1] — 行、列下标可以是整型表达式
3.a[1][2]=3.14/2; — 数组元素作为赋值表达式的左值
4.a[3][4]=15; — 错误!最后一个元素是a[2][3],“越界”
二、输入输出二维数组元素
1.二维数组行序优先输出
#include <stdio.h> int main() { int a[3][5]; //定义3行5列的二维数组 int i; //循环中用于记录行数变化 int j; //循环中用于记录列数变化 //嵌套循环方式输入数组元素 for (i = 0; i < 3; ++i) { for (j = 0; j < 5; ++j) { scanf_s("%d", &a[i][j]); } } //嵌套循环方式输出数组元素:常规操作 for (i = 0; i < 3; ++i) { for (j = 0; j < 5; ++j) { printf("%d\t", a[i][j]); } putchar('\n'); } } 运行结果: 85 78 99 96 88 76 89 75 97 74 64 92 90 73 56 85 78 99 96 88 76 89 75 97 74 64 92 90 73 56
2.二维数组列序优先输出
#include <stdio.h> int main() { int a[3][5]; int i; int j; for (i = 0; i < 3; ++i) { for (j = 0; j < 5; ++j) { scanf_s("%d", &a[i][j]); } } //循环嵌套方式输出数组元素:列序优先 for (i = 0; i < 5; ++i) { for (j = 0; j < 3; ++j) { printf("%d\t", a[j][i]); //注意i,j顺序 } putchar('\n'); } } 运行结果: 85 78 99 96 88 76 89 75 97 74 64 92 90 73 56 85 76 64 78 89 92 99 75 90 96 97 73 88 74 56
3.二维数组元素倒序输出
#include <stdio.h> int main() { int a[3][5]; int i; int j; for (i = 0; i < 3; ++i) { for (j = 0; j < 5; ++j) { scanf_s("%d", &a[i][j]); } } for (i = 2; i >=0; --i) { for (j = 4; j >=0; --j) { printf("%d\t", a[i][j]); } putchar('\n'); } } 运行结果: 85 78 99 96 88 76 89 75 97 74 64 92 90 73 56 56 73 90 92 64 74 97 75 89 76 88 96 99 78 85
三、实例:二维数组行列互换后存入另一个二维数组
#include <stdio.h> int main() { int a[2][3] ={{1,2,3},{4,5,6}}; int b[3][2]; int i; int j; printf("array a: \n"); for (i = 0; i < 2; ++i) { for (j = 0; j < 3; ++j) { printf("%d\t", a[i][j]); } putchar('\n'); } for (i = 0; i < 2; ++i) { for (j = 0; j < 3; ++j) { b[j][i] = a[i][j]; } } printf("array b: \n"); for (i = 0; i < 3; ++i) { for (j = 0; j < 2; ++j) { printf("%d\t", b[i][j]); } putchar('\n'); } } 运行结果: array a: 1 2 3 4 5 6 array b: 1 4 2 5 3 6
-
matlab一维数组及其应用x_matlab数组定义
2020-02-18 00:38:156引用一维数组中的单个元素;7一维数组中单个元素的赋值;8引用一维数组中的子数组;9给一维数组中的子数组赋值;10Matlab中的函数 在一维数组上的运算规则;10一维数组的转置运算;11一维数组与一维数组的运算;12一维数组... -
指针 二维数组元素引用
2020-12-30 16:30:24二维数组元素指针引用 指针与一维数组和二维数组 1.定义 2.关系 3.数组指针和指针数组的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的...二维数组元素指针引用
1.定义
2.数组指针和指针数组的区别
1.二维数组可以理解为是一个一维数组,不过每个数组元素又是一个一维数组
int a[2][3]={{1,2,3},{4,5,6}};
可以理解为,二维数组只有两个元素,即a[0]和a[1],只不过元素类型为一维数组
指向二维数组的指针(行指针)
格式:类型 (*指针名) [N]
N为数组的第二维长度2.二维数组指针与指针型数组的区别
int a[][3] = { {1,2,3},{4,5,6} };
int *p0[3] = a; //错误,将一个二维数组赋给指针型数组
int(*p1)[3] = a; //正确
数组指针(也称行指针)
定义 int (*p)[n];
()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将**二维数组**赋给一指针,应这样赋值: int a[3][4]; int (*p)[4]; //该语句是定义一个数组指针,指向含4个元素的一维数组。 p=a; //将该二维数组的首地址赋给p,也就是a[0]或&a[0][0] p++; //该语句执行过后,也就是p=p+1;p跨过行a[0][]指向了行a[1][ ]
比如要表示数组中i行j列一个元素:
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j]
优先级:()>[]>*
出处:
https://www.cnblogs.com/hongcha717/archive/2010/10/24/1859780.html3.实现一个3*4阶矩阵转置 指针为形参
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stdlib.h> //定义一个3行4列的二维数组arr。 //定义一个函数func()完成矩阵转置,以数组指针作为参数。 //在func()函数内部,使用for循环完成矩阵转置 void func(int(*pa)[4], int(*pb)[3], int x, int y) { int i, j; /*-------------------------begin------------------*/ for(i=0;i<x;i++) for(j=0;j<y;j++){ *(pb[j]+i)=*(pa[i]+j); // *(*(pb+j)+i)=*(*(pa+i)+j); // pb[j][i]=pa[i][j]; // (*(pb+j))[i]=(*(pa+i))[j]; } /*--------------------------end-------------------*/ printf("转置:\n"); for (i = 0; i < y; i++) { for (j = 0; j < x; j++) { printf("%d\t", pb[i][j]); } printf("\n"); } } int main() { int i, j; int arr[3][4], brr[4][3]; printf("输入二维数组的元素:\n"); for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { scanf("%d", &arr[i][j]); } } func(arr,brr,3,4); return 0; }
另有: -
C语言1-一维数组(1).docx
2020-03-17 08:36:34C语言程序设计教案 章节名称 一维数组1 授课...掌握一维数组的定义初始化和引用的方法 3.理解冒泡排序或选择排序的算法 能力目标 能用数组解决实际问题 教学重点 1.一维数组的定义初始化和引用的方法 2.冒泡排序或选 -
Java 数组 之 一维数组 追加 元素
2021-03-16 16:36:01一维数组1.1 一维数组的定义和初始化1.2 对一维数组的操作, 遍历,添加,插入,修改,删除,排序,查找2. 二维数组2.1 二维数组的定义和初始化2.2 二维数组的遍历*/public class ArrayAppend {public static void main... -
一维数组简介及三种排序方法
2019-07-27 19:36:04数组简介: 数组是用来存储数据的集合,但是,通常我们会把数组看作一个存储具有相同类型 的变量集合会更有用。无须声明单个变量,例如:number0...声明一个数组变量、创建数组、然后将数组引用赋值给变量这三个步驟... -
一维数组的定义与引用(初学者)
2019-01-20 00:10:00数组:具有相同类型的数据组成的序列,且该序列是有序集合。 数组中的每一个数据称为数据元素(下标变量)。 数组元素由其所在的位置序号(数据元素的下标)来区分。 数组名与下标的意义:可以用...一维数组的定... -
C语言——数组概念及分类;一维数组的定义、初始化;二维数组的定义、初始化;数组元素的引用
2020-11-30 10:59:42即若干个字符变量的集合,数组中的每个元素都是字符型的变量 char 组名[]; 2)短整型的数组 short int 组名[]; 3)整型的数组 int 组名[]; 4)长整型的数组 long int 组名[]; 5)浮点型的数组(单、双) float ... -
通过指针访问二维数组的三种方法
2019-11-21 17:17:44下面总结了一下通过指针访问二维数组的三种方法,里边涉及指针、指针数组、数组指针、指向指针的指针以及二维数组的应用,愿对于大家理解和使用指针有所参考和帮助。 程序如下: #include <stdio.h> int ... -
C语言定义和引用一维数组
2021-01-06 23:32:19如何定义和引用一维数组 1.数组是一组有序数据的集合,下标代表数据在数组中的序号 2.用一个数组名和下标来唯一地确定数组中的元素,如S15代表第十五个学生成绩 3.数组中的每一个元素都属于同一种数据类型,不能把... -
C语言:二维数组元素的引用
2017-09-12 17:34:08任务代码: (1) #include int main() { int a[3][5],i,j; printf("输入3*5数组:\n"); //输入 for(i=0;i;i++) { for(j=0;j;j++) { scanf("%d",&a[i][j]); } -
C语言_数组_二维数组的定义和二维数组元素的引用
2020-09-14 18:02:54对于二维数组,省略只能省略第一个方括号中的常量表达式 如上的初赋值语句等同于: int a[4][3] = {{1, 2, 3}, {4, 5}, {6}, {8}}; 第二种:int = c[][3] = {1, 2, 3, 4, 5}; 要计算第一个空的方括号中的... -
C语言二维数组及指针引用
2022-04-11 15:40:58用指针引用二维数组元素 C语言二维数组及指针引用 1.二维数组的定义与表示 二维数组是形如: 表示一个int类型,三行四列的数组 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12} 表示一个char类型,两行三列的数组 char s... -
一维/二维数组的几种初始化方法
2020-08-03 20:54:18一维数组的初始化方法 方式一:静态初始化 数据类型[] 数组名 = {元素1,元素2,元素3...};//必须在一个语句中完成,不能分开两个语句写 举例: 定义存储1,2,3,4,5整数的数组容器 int[] arr = {1,2,3,... -
【c语言高手请进1、一维数组实验目的:掌握一维数组的定义、初始化,以及一维数组元素的下标法引用和指针法...
2021-05-18 15:59:11c语言高手请进1、 一维数组实验目的:掌握一维数组的定义、初始化,以及一维数组元素的下标法引用和指针法引用。实验内容:1.将数组a中的10个元素后移m位,移出的m位顺序存放在数组的前位。要求:(1)数组元素值在... -
Java程序设计基础:一维数组应用数组作为方法形参.pptx
2022-05-26 15:55:46任务:编写方法实现下列一维数组的基本操作 数组作为方法的形参 任务1、使用随机数初始化一个整型数组 任务2、显示一个整型数组中的所有元素 任务3、对数组元素求平均 任务4、将数组内容反向存储 1、使用随机数初始... -
一维数组创建的几种方法
2018-04-07 22:14:10数组可以说是对于每种语言学习中的最基础的数据结构之一,...这部分来说俩种声明方式的效果是相同的,但是推荐首选第一种方法来声明,因为第一种方法更加直观,更具有可读性,可以通过声明看出是一种引用类型,而... -
详解C++中的一维数组和二维数组
2021-05-23 04:40:24C++一维数组定义一维数组定义一维数组的一般格式为:类型标识符 数组名[常量表达式];例如:int a[10];它表示数组名为a,此数组为整型,有10个元素。关于一维数组的几点说明:1) 数组名定名规则和变量名相同,遵循... -
一维数组的引用和二维数组的引用以及函数指针的引用
2018-07-04 21:48:48#include<iostream>using namespace std;#include<stdlib.h>void main(){ int a[10] = { 1,2,3,4,5,6,7,8,9,...//一维数组的引用 int i = 1; for (auto data : ra) { data += i; //i+... -
一维数组的定义、初始化、引用
2022-04-23 16:52:45数组用来表示一组数据的集合。使用数组,可以方便地定义一个名字(数组名)来表示大批量数据,并能够通过循环批处理大量...(1)一维数组是由元素类型、数组名和长度(数组包含的元素个数)组成的构造类型。 in... -
一维数组的定义和一维数组的引用
2017-08-06 13:33:15一维数组的定义和一维数组的引用 内存中一串连续的存储单元(变量),叫数组。指针移动和比较只有在一串连续的数组中才有意义。 当数组中每个变量只带一个下标时,为一维数组。 定义一个一维数组: 类型名 数组... -
一维数组的定义、初始化和引用
2021-05-19 08:32:45一维数组的定义、初始化和引用一维数组的定义、初始化和引用1.一维数组的定义方式为:类型说明符 数组名[常量表达式](1)数组名的命名方法与变量名相同,遵循标识符命名规则;(2)数组是用方括号括起来的常量表达式,...