C语言--一维数组和多维数组数组名的含义

一、一维数组

对于一维数组,我们很容易理解数组名和元素地址的关系,即数组名代表数组首地址,亦即第一个元素的地址。

如定义数组int a[9]={1,2,3,4,5,6,7,8,9},则由上面的说明可得

a=&a[0],*a=a[0];

a+1=&a[1],*(a+1)=a[1];

.........

二、二维数组

对于二维数组,我们一定要记住:它是数组的数组。如定义一个二维数组int b[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},此时我们知道,可以把b看做是一个有三个元素的数组,分别是b[0],b[1],b[2];每个元素(b[0],b[1],b[2])又都是有四个元素的一维数组。那么,此时的数组名代表什么呢?

按照一维数组的思路去思考,b代表第一个元素的地址,那么这里的第一个元素应该是一维数组b[0];而b[0]又是一维数组的数组名,也就是说b[0]代表数组b[0]中的元素首地址。这样一来就可以得到:

b=*b=b[0]=&b[0][0],**b=*b[0]=b[0][0];

*b+1=b[0]+1=&b[0][1],*(*b+1)=*(b[0]+1)=b[0][1];

......

b+1=*(b+1)=b[1]=&b[1][0],**(b+1)=*b[1]=b[1][0];

*(b+1)+1=b[1]+1=&b[1][1],*(*(b+1)+1)=*(b[1]+1)=b[1][1];

......

用图示的方法为:

在内存中,他们是一维排列的,如下图所示:

三、多维数组

对于多维数组的分析,和二维数组是一样的,始终记住:多维数组就是数组的数组。

时间: 2024-08-24 03:47:30

C语言--一维数组和多维数组数组名的含义的相关文章

一维动态数组和二维动态数组的创建和使用

#include<stdio.h> #include<malloc.h> void main(){ int *a,n=10,i; /* calloc()函数的原型是:(void *)calloc(unsigned n,unsigned size) calloc()函数用于向系统动态申请n个,每个占sizege字节的内存单元,函数返回值为所申请的内存空间首地址 malloc和calloc主要区别在于,当系统的内存只剩下一些非常小的碎片时,用calloc函数设计的动态数组的时间效率优于

一维指针和二维指针数组打印

#include <stdio.h>#include <locale.h> char *Weekdays[] = {    "Monday",    "Tuesday",    "Wednesday",    "Thursday",    "Friday",    "Saturday",    "Sunday"    }; void print

间隔取数组、多维取数组方法[:,::2,::2,:]

例1: a=[0,1,2,3,4,5,6,7] print(a[1:3:1])输出是[1, 2],意思是从下标1开始以步长为1到下标3结束 print(a[1:4:2])输出是[1, 3],意思是从下标1开始以步长为2到下标4结束 例2: inputs[:,::2,::2,:] 意思是第一维度,从开始以步长为1到结束 第二维度,从开始以步长为2到结束输出 第三维度,从开始以步长为2到结束输出 第四维度,从开始以步长为1到结束 原文地址:https://www.cnblogs.com/chenxi

C语言一维数组、二维数组、结构体的初始化

C语言数组的初始化表示方法 一.C语言一维数组初始化: (1)在定义数组时对数组元素赋以初值.如: static int a[10]={0,1,2,3,4,5,6,7,8,9}; 经过上面的定义和初始化后,a[0]=0,a[1]=1,… ,a[9]=9. (2)初始化时可以只对一部分元素赋初值.例如: static int a[10]={0,1,2,3,4}; 定义的数组有10个元素,但只对其中前5个元素赋了初值,后5个元素初值为0. (3)将数组的元素值全部为0,可以用下面的方法:(方法一)

07-JAVA一维数组及多维数组(2)

1. Java数组的定义: 1) 和其它编程语言的数组定义基本相同,具有2要素,分别是类型一致(数组中的数据都是一种类型的)和定长(初始化时就已经确定长度,这也意味着数组的内存空间也确定了,即大小不变了): 2) 在Java中数组类型也是一种引用类型,底层是用面向对象的类实现的: 3) 定义数组:支持两种格式 i. Java格式:type[] arrayName; ii. 传统的C语言格式:type arrayName[];  // 为了满足C程序员的编程习惯 !!更加推荐Java风格的,因为其

一维数组,二维数组,三维数组,数组与指针,结构体数组,通过改变指针类型改变访问数组的方式

 打印数组中的每个元素,打印每个元素的地址: #include <stdio.h> #include <stdlib.h> void main(void) { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (int *p = a; p < a + 10;p++)  //指针类型决定4个字节 { printf("\n%p,%d", p, *p); } getchar(); } 指针数组 #inclu

数组(一维数组、二维数组)

数组概述 C# 数组从零开始建立索引,即数组索引从零开始.C# 中数组的工作方式与在大多数其他流行语言中的工作方式类似.但还有一些差异应引起注意. 这些其实和泛型有些类似,数组的操作没有泛型方便,但是性能却不是泛型所能比拟的 声明数组时,方括号 ([]) 必须跟在类型后面,而不是标识符后面.在 C# 中,将方括号放在标识符后是不合法的语法. int[] table; // not int table[]; 另一细节是,数组的大小不是其类型的一部分,而在 C 语言中它却是数组类型的一部分.这使您可

2018/4/11[学了一维数组和多维数组,但是做的是选择的题]

用的教材是清华大学出版社的<JAVA语言程序设计> 今天上课讲的是一维数组和多维数组 二维数组就是由多个一维数组组合而来的 多维数组就是依次向下的数组累计而来 比如: 三维=n个二维=nxm个一维 学的虽然是皮毛,习题近期会努力做一下! po上来第三章的习题 刚修改完的 3-3 1 package javatext; 2 3 import java.util.Scanner; 4 public class P3_3 { 5 6 public static void main(String[]

java数组(一维数组,二维数组)

数组初始化: 1,动态初始化:数组定义与为数组分配空间和赋值的操作分开进行 2,静态初始化:在定义数组的同时就为数组元素分配空间并赋值 3,默认初始化:数组是引用类型,它的元素相当于类的成员变量,因此,数组分配空间之后 每个元素也被按照成员的规则被隐士的初始化值 ------------------------------------------------. 一维数组: package day06; import java.util.Date; /*** * 数组演示 * 数组的声明: * t