-
2018-12-04 15:27:30
二维数组
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。
二维数组元素表示方法a // 数组首行的地址 a[0] //元素a[0][0]的地址。 二维数组可以看成是一维数组的数组,(a[0] 、a[1] 、a[2] ) 。 a[0] 可以认为是数组名,数组名代表数组首元素的地址, a[0] 代表 a[0][0]的地址 *(a+0) //元素a[0][0]的地址 因为a是二维数组名,即是一维数组(a[0] 、a[1] 、a[2] )这三个元素的的首地址。 a+0就是 a[0]的地址。 *是取指针的值。 那么*(a+0)就是取 a[0]的值。 a[0] 是一个数组名,他代表数组首元素a[0][0]的地址。 a+1 // 数组第二行的地址 a[1]+2 // 元素a[1][2]的地址 a[1] 是数组名,数组名是指向数组首元素的地址, a[1]+2 数组名+2 代表数组的第三个元素的地址。 *(a+1)+2 // 元素 a[1][2]的地址 a+1 就是 a[1] 的地址 ,*(a+1) 就是 a[1][0]的地址, *(a+1)+2 就是 a[1][2]的地址。 *(a[1]+2) //元素 a [1][2] 的值 a[1] 是数组名。 a[1]+2 是 a[1][2]的地址,*(a[1]+2) 就是 元素 a[1][2]的值了。 *(*(a+1)+2) //元素 a[1][2]的值 a+1 代表 a[1]的地址,*(a+1) 代表 a[1][0] 的地址,*(a+1)+2 代表 a[1][2] 的地址。
更多相关内容 -
二维数组元素及其地址表示的完美解读
2018-09-26 16:13:57一,二维数组的架构与逻辑 1.a[3][4] = {a[0], a[1], a[2]} ={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10... 每个一维数组包含n个元素 不废话,直接看图 2,确定的公式 a[0] = a[0]+0 = &a[0][0] = *(a+0)...一,二维数组的架构与逻辑
1.a[3][4] = {a[0], a[1], a[2]} ={{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};
二维m×n --> m个一维数组 --> 每个一维数组包含n个元素
不废话,直接看图
2,确定的公式
a[0] = a[0]+0 = &a[0][0] = *(a+0)+0 = *a
a = &a[0] = &(&a[0][0]) = &(*a) a;
二, 二维数组中按层级解释
1,二维数组中的一维数组
a[0] = a[0]+0 = &a[0][0] = *(a+0)+0 = *a
a[1] = a[1]+0 = &a[1][0] = *(a+1)+0 = *(a+1)
a[n] = a[n]+0 = &a[n][0] = *(a+n)+0 = *(a+n)
2,二维数组中一维数组的元素地址
a[0][2] --> a[0]+2 = &a[0][2] = *(a+0)+2 = *a+2
a[1][3] --> a[1]+3 = &a[1][3] = *(a+1)+3 = *(a+1)+3
a[i][j] --> a[i]+j = &a[i][j] = *(a+i)+j = *(a+i)+j
3,在指针数组和数组指针中更需小心
-
c语言的数组的地址的表示方法
2018-07-01 21:23:43c语言的数组的地址的表示方法 今天刚发现了c语言数组地址表示另一种不错的方法。这个方法跟指针结合起来,对于操作内存来说,非常方便。 #include<stdio.h> int main(void) { int c[5] = {1,2,3,4...c语言的数组的地址的表示方法
今天刚发现了c语言数组地址表示另一种不错的方法。这个方法跟指针结合起来,对于操作内存来说,非常方便。
#include<stdio.h>
int main(void)
{
int c[5] = {1,2,3,4,5};
int *ptr = (int *)(&c +1);
printf("%d %d\n", *(c +1), *(ptr-1));
}
上边的代码执行完毕后,会出现什么结果?
*(c+1),应该很明显: 2;
*(ptr-1),结果是: 5;
分析:
可以试一下一下代码:
printf( “%p\n”, c+5 );
printf("%p\n", &c[5]);
printf("%p\n", &c+1);
运行以上3条代码后,你就会惊奇的发现,它们输出的地址,完全一致。
也就是说, &c+1表示了该数组最后一个元素的下一个地址。,而&c 与 c 或者 &c[0] 一致,都表示该数组的首地址。
另外,&c+1 比c+5 和 &c[5]使用更方便: 它不必知道将要操作的数组的sizeof。
或许还有其他更简便的方法吧?
转载自:http://www.cnblogs.com/sophia0405/archive/2008/10/23/1317802.html
-
数组首元素地址、数组首地址、整个数组地址的分析
2019-03-09 10:01:221、数组首元素地址 :该数组有10个元素,数组首元素即a[0],取的是该元素的地址。 2、数组首地址:就是数组名字a的地址。 3、整个数组地址:就是整个数组的地址,取地址&a。 下面的代码进行测试: #...现在定义一个char a [10];的数组,下面对这几个名词进行分析:
1、数组首元素地址 :该数组有10个元素,数组首元素即a[0],取的是该元素的地址。
2、数组首地址:就是数组名字a的地址。
3、整个数组地址:就是整个数组的地址,取地址&a。
下面的代码进行测试:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(void) { char a[10]; //1 * 10 个字节 /*类型的本质:固定内存块大小别名 可以通过 sizeof()测试 */ printf("sizeof(a) = %d\n", sizeof(a)); //打印地址 //数组名字,数组 首 元素地址,数组首地址 printf("a:%d, &a:%d &a[0]:%d\n", a, &a,&a[0]); //a, &a的数据类型不一样 //a, 数组首元素地址, 一个元素1个字节,+1《==》 +1 //&a, 整个数组的首地址,一个数组1*10 = 10个字节,+1,《==》 +10 printf("a+1:%d, &a+1:%d &a[1]:%d\n", a + 1, &a + 1, &a[1]); printf("\n"); system("pause"); return 0; }
测试结果:
示意图:
以上的测试结果说明,a 与&a的步长不一样,a代表的是数组首元素的地址,也是数组的首地址,加1等价于加一个数组类型的长度;&a代表的是整个数组的地址,加1等价于加整个数组的长度,此例子中也就是加10。
-
求数组指定元素的地址/求数组元素的下标
2019-11-22 14:33:15求数组指定元素的地址/求数组元素的下标 一:数组元素的存储 由于数组一般不做插入和删除操作,也就是说只要建立了数组,则结构中的数据元素的个数和元素之间的关系就不再发生变动。因此常采用顺序存储结构来表示... -
数组元素的三种表示方式
2017-02-18 10:19:07介绍了数组元素的三种表示方式:下标遍历、数组名和指针变量 -
三维数组元素存储地址计算(极其易懂版)
2021-05-25 23:33:07 -
C语言指向数组元素的指针
2021-05-21 16:26:57指向数组元素的指针和运算法则所谓指向数组元素的指针,其本质还是变量的指针。因为数组中的每个元素,其实都可以直接看成是一个变量,所以指向数组元素的指针,也就是变量的指针。指向数组元素的指针不难,但很常用... -
一维数组名、取数组首元素地址、取数组名地址三者值与含义辨析
2019-07-05 21:09:561.数值名c是一个地址常量,表示数组首元素的地址 2.&c[0]也表示数组首元素的地址 3.但&c表示的是整个数组的首地址。 这三者的地址值是相同的,但第3与1、2含义却不一样,1与2不管是地址值还是含义都是一样的... -
数组元素首地址和数组首地址
2020-10-07 21:38:16printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 ... -
数组名是不是数组元素首地址?
2020-01-08 15:36:31在声明中,表示引用 (2)p = &i; 在表达式里,是取址运算符 *符号 (1)int *p; 在声明中,表示指针 (2)*p = i; 在表达式里,是解引用运算符 左值和右值 一般来说,赋值操作等号左边是(可修改的)左值,右边... -
二维数组元素的地址
2017-08-17 10:18:24一维数组元素的地址大家都比较容易理解,但对于二维数组,就很容易搞混了.今天我又被这个问题给弄糊涂了,翻了翻老谭的书本,对这个问题有了更深的认识. 首先给出一个二维数组a,它的定义为: int a[3][4] = ... -
关于数组名:数组名是数组首元素的地址
2022-01-17 18:07:12为什么数组名表示的是数组首元素的地址捏^_~ 真的不来看看嘛(╹ڡ╹ ) -
引用数组元素
2019-04-24 17:15:47引用一个数组元素可以有以下两种方法: (1)指针法。有 *(a+i), *(p+i) 两种表现形式,都是用间接访问的方法来引用数组元素。 (2)下标法。有a[i] 和 p[i] 两种形式。在编译时这两种形式也要处理成 *(a+i) 或 *(p+... -
C语言引用一个数组元素的三种方式
2022-03-03 20:11:44其中a是数组名,p是指向数组元素的指针变量,其初值为p = a。 代码实现: #include<stdio.h> #include<stdlib.h> int main(void){ int a[10], i; int *p; p = a; // 数组首地址赋值给p for(i = 0; ... -
C++ 查找数组元素
2022-03-17 16:19:29C++ 查找数组元素 -
数组元素首地址和数组首地址区别
2019-09-18 18:15:46printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 ... -
数组元素反转
2020-07-08 15:48:36数组元素反转思路 1.数组元素反转,其实就是对称位置的元素交换。 2.通常遍历数组用的是一个索引,int i=0, 现在表示对称位置需要两个索引 int min=0; int max=array.length-1; 3.如何交换两个变量的值? int a=10... -
二维数组和数组元素地址
2017-07-28 15:58:09二维数组和数组元素的地址 ...通过我们前面学过的知识可以知道,数组名是一个地址,其值是第一个元素的地址,而此地址的基类型就是数组元素的类型,而二维数组中同样a[0], a[1],a[2]都是一维... -
C-数组地址 数组首行地址 数组首元素地址 区别探究
2020-06-13 11:25:45数组名+1表示以一个数组元素大小为步长移动指针 &数组名 就表示 整个数组的内存块地址 &数组名+1表示以一个数组内存块大小为步长移动指针 但是一维数组和多维数组有部分差异 差异1: 为数组指针赋值 ... -
matlab数组元素个数
2021-05-06 00:58:08A= 1 7 7 2 3 5 6 8 0 原来矩阵没有 第4行和第4列, MATLAB 自动 增加行列数,对 未输入的元素赋 值0 2函数生成矩阵 MATLAB提供了一些函数来生成特殊矩阵,常见命令有:(1) zeros(生成零矩阵) ; (2) eye(生成对角元为1..... -
数组元素下标的上限_c语言中,数组元素的下标下限为
2021-05-19 05:15:47展开全部c语言中,数组元素的...数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。例如,a[0]表示名字为a的数组中的第一个元素,a[1]代表数组a的第二个元素,以此类推。对于VB的数组,表示数组元素时应注... -
引用数组元素的四种方式
2020-02-29 23:10:58//注意a++是不可的,因为a本来就代表了数组的首地址,a是不可改变的。 { printf ( "%d\n" , * p ) ; } printf ( "-----------------\n" ) ; for ( p = a , i = 0 ; i < 5 ; i ++ ) ... -
指针 二维数组元素引用
2020-12-30 16:30:24二维数组元素指针引用 指针与一维数组和二维数组 1.定义 2.关系 3.数组指针和指针数组的区别 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的... -
Javascript中数组元素是什么
2021-07-08 12:00:41数组元素也是一种变量,其标识方法为数组名后跟一个下标,下标表示了元素在数组中的顺序号;数组元素通常也称为下标变量。 Array 数组对象是 JS 的内置对象,它可以用一个变量来存储一系列相同或不同类型的值,其中... -
用指针表示数组的地址与值
2018-01-26 22:50:13p表示a这个数组的首地址,p == &a[0]; p+i,a+i都表示这个数组的第i+1个值的地址,==&a[i]; *p表示a[0]的值,*p = a[0]; 指针法: *(p+i),*(a+i)都表示这个数组第i+1个值,==a[i]; ... -
二维数组的首地址、首行地址和元素地址
2018-10-11 10:39:44首先定义一个简单的三行四列的数组: int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; 其中: a代表第0行的首地址,其步长为一行的长度(16B), 所以a+1代表第1行的首地址,比a大16;a+2代表第2行的首地址... -
python简单获取数组元素个数的方法
2020-11-20 23:59:39python简单获取数组元素个数的方法更新时间:2015年07月13日 17:54:46 作者:pythoner这篇文章主要介绍了python简单获取数组元素个数的方法,实例分析了Python中len方法的相关使用技巧,非常简单实用,需要的朋友可以... -
C语言中数组的首元素地址和首地址
2018-09-07 20:26:38数组的首元素地址:表示数组的首个元素的地址。 数组的首地址:表示整个数组的地址。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> int main(int argc, ....