`

指针和多维数组

 
阅读更多

摘自:《C primer plus》

 

指针和多位数组

假设声明如下:

int zippo[4][2];

数组名zippo同时也是数组首元素的地址。在本例中能够,zippo的首元素本身又是包含两个int的数组,因此zippo也是包含两个int 的数组的地址。下面从指针属性进一步分析:

  • 意味zippo是数组首元素的地址,所以zippo的值和&zippo[0]相同。另一方面,zippo[0]本身是包含两个整数的数组,因此zippo[0]的值同其首元素(一个整数)的地址&zippo[0][0]相同。简单地说,zippo[0]是一个整数大小对象的地址,而zippo是两个整数大小对象的地址。因为整数和两个整数组成的数组开始与同一个地址,因此zippo和zippo[0]就有相同的数值。
  • 对一个指针(也即地址)加1,会对原来的数值加上一个对应类型大小的数值。在这方面,zippo和zippo[0]是不一样的,zippo所指向对象的大小是两个int,而zippo[0]所指向对象的大小是一个int。因此zippo+1和zippo[0]+1结果不同。
  • 对一个指针(也即地址)取值(使用运算符*或者带有索引的[]运算符)得到的是该指针所指向对象的数值。因为zippo[0]是其首元素zippo[0][0]的地址,所以*(zippo[0])代表存储在zippo[0][0]中的值,即一个int数值。同样,*zippo代表其首元素zippo[0]的值,但是zippo[0]本身就是一个int数的地址,即&zippo[0][0],因此*zippo是&zippo[0][0]。对着两个表达式同时应用取值运算符将得到**zippo等价*&zippo[0][0],后者简化后即为一个int数zippo[0][0].简言之,zippo是地址的地址,熏药两次取值才可以得到通常的数值。地址的地址或指针的指针是双重间接(double indirection)的典型例子。
0
0
分享到:
评论

相关推荐

    C++指针、多维数组从从入门到精通

    本文将深入探讨C++中的指针和多维数组,这对于理解和编写高效、灵活的C++代码至关重要。 首先,让我们谈谈指针。在C++中,指针是一个变量,它存储了一个内存地址,这个地址指向另一个变量。理解指针的基本操作是...

    程序设计-通过指针引用多维数组.pptx

    本文主要讲解了程序设计中多维数组的概念和实现,包括多维数组的定义、元素的地址计算、指针变量的使用等方面的内容。 在程序设计中,多维数组是一种常用的数据结构,用于存储和处理大量的数据。多维数组可以看作是...

    易语言重定义多维数组

    在多维数组操作中,指针可能用于高效地遍历和操作数组元素。 - “RtlCopyMemory”和“RtlMoveMemory”是Windows API中的内存操作函数,它们分别用于复制和移动一段内存区域。在易语言中调用这两个函数,可能是在...

    C/C++中多维数组指针作为函数参数传递程序

    C/C++中多维数组指针作为函数参数传递程序 在 C++ 中,多维数组指针作为函数参数传递是非常常见的编程技术。本文将详细介绍如何在 C/C++ 中将多维数组指针作为函数参数传递,並对相关知识点进行详细解释。 多维...

    C语言中指针引用多维数组的教学实践.pdf

    ### C语言中指针引用多维数组的教学实践 #### 一、指针在C语言中的重要性 C语言是一种基础且重要的编程语言,被众多院校作为程序设计的入门语言。然而,C语言也因其语法的灵活性和变化多端的特点而被认为难以掌握...

    图文详解c/c++中的多级指针与多维数组

    在C/C++编程中,多级指针和多维数组是两种高级概念,它们在处理复杂数据结构和大型数据集时特别有用。然而,对于初学者来说,它们可能显得复杂和难以理解。本文将深入解释这两种概念,帮助你像理解一级指针和一维...

    C++动态创建多维数组

    本实例将深入探讨如何使用`new`运算符来动态创建多维数组,以及如何处理多维数组指针。 首先,让我们了解`new`运算符的基本用法。`new`是C++中的一个关键字,用于在堆上分配内存。当我们声明一个数组时,可以使用`...

    C语言多维数组与指针

    在C语言中数组和指针之间存在一些千丝万缕的联系,搞不清楚的情况下非常容易出错,在前一段时间我写过关于数组和指针的分析,但是还是存在很多不清楚的问题,特别是当出现一些复杂的问题时,这种情况更加的复杂。...

    第26课 - 多维数组和多维指针.rar

    在本课程中,我们将深入探讨多维数组和多维指针的使用,这对于理解和编写复杂的程序至关重要。多维数组可以被视为数组的数组,通常用于处理二维或更高维度的数据,比如矩阵或图像。而多维指针则是指针变量,它能够...

    C/C++中传递多维数组的各种方法

    本文将介绍在 C/C++ 中传递多维数组的各种方法,包括数组和指针的各种用法。 方法一:使用二维数组 在 C/C++ 中,可以使用二维数组来传递多维数组。例如,在上面的示例代码中,我们定义了一个二维数组 `score[4][4...

    C#中各种数组的性能比较

    在C#编程语言中,数组是存储相同类型数据的基本结构之一,它们被广泛应用于各种场景。...而在多维数据处理中,多维数组提供了直观的语法和良好的性能表现。开发者应根据实际情况权衡各种因素,选择最适合的数组类型。

    c++数组指针ppt

    指针和多维数组有着紧密的关系,多维数组可以被看作是一种特殊的指针,指针可以指向多维数组的元素。例如,int x[3][4]; int *pa = &x[0][0];这里,pa是一个整型指针,指向多维数组x的第一个元素。 八、指针数组 ...

    C51单片机C语言编程数组指针和指针数组应用.doc

    多维数组的指针变量可以用来访问多维数组的元素。例如,unsigned char a[3][4];其中,a 是一个二维数组,a[0],a[1],a[2] 是三个一维数组,每一个一维数组又含有四个元素。数组及数组元素的地址表示可以通过以下...

    c语言指针数组-·详解数组指针与指针数组

    在C语言中,指针和数组是两种非常重要的数据结构,它们可以...以上内容详细阐述了C语言中数组指针和指针数组的概念,以及如何通过指针操作数组,包括一维数组和多维数组。理解这些概念对于编写高效的C程序至关重要。

    指针数组与数组指针与二级指针

    二级指针常用于处理多维数组,尤其是二维数组。在二维数组中,第一层索引通常代表行,第二层索引代表列。如果我们有一个`int arr[3][4]`的二维数组,一个二级指针`int **ptr`可以用来遍历这个数组,例如`ptr = arr`...

    11.2 多维数组.7z

    这个项目可能涵盖了数组的动态分配、多维数组的遍历技巧、嵌套循环的应用,以及可能涉及到的一些高级主题,比如指针操作和内存管理。这对于提升你的编程技能,特别是处理复杂数据结构的能力非常有帮助。

    一组新的多维数组模板类

    动态数组和丢失了静态大小成为了array_base的数组维度不一样时,赋值引发 std::length_error异常,可以捕捉到, 比较也是这样 7.作为函数的参数 还举开头的那个例子 void foo(array_base<;int,2&...

    NJUCM-数据结构课程4.实验四 字符串和多维数组实验.zip

    在本实验中,我们主要探讨的是“NJUCM-数据结构课程4”的实验四,其主题聚焦于字符串和多维数组。这两个数据结构是计算机科学基础中的重要概念,尤其是在编程和算法设计中不可或缺。 字符串是计算机科学中处理文本...

    1.8编程基础之多维数组_08矩阵加法(B).pdf

    总结来说,“1.8编程基础之多维数组_08矩阵加法”不仅介绍了多维数组和矩阵加法的编程实现,还涉及了信息学奥林匹克竞赛的培训内容,这些内容为竞赛提供了全方位的技能和知识储备,帮助学生在编程和算法领域打下坚实...

Global site tag (gtag.js) - Google Analytics