`
yqin
  • 浏览: 58746 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

数组名和数组名取地址区别

 
阅读更多
#include "stdio.h"
void main()
{
	int a[5]={1,2,3,4,5};
	int *ptr;
	ptr=(int *)(&a+1);
	printf("%d,%d",*a,*(ptr-1));
}

 

上面运行的结果为:1,5 为什么会是这个结果呢? 这是因为数组名和数组名取地址之间是有区别的。

其实a和 &a结果都是数组的首地址,但他们的类型是不一样。其实a表示&a[0],也即对数组首元素取地址,a+1表示首地址+sizeof(元素类型大小)。&a虽然值为数组首元素地址,但类型为:类型 (*)[数组大小],所以&a+1大小为:首地址+sizeof(a)

0
0
分享到:
评论

相关推荐

    C/C++数组名与指针区别深层探索

    ### C/C++数组名与指针的区别深层探索 在C/C++编程语言中,指针是一种非常重要的数据类型,它提供了直接访问...正确地区分数组名和指针的概念可以帮助开发者更好地利用这两种数据结构的优势,避免常见的陷阱和错误。

    a是一个具有4个整型变量的数组的名字,而&a是数组的首地址

    1. 数组和指针的关系:数组名作为左值时代表首元素地址,取地址符"&"获取数组整体地址。 2. 指针运算:指针加法是基于数据类型的,不是简单的数值加法。 3. 类型转换:数组名可以被当作指向第一个元素的指针进行类型...

    数组指针和指针数组的区别

    数组指针和指针数组的区别 在 C 语言中,数组指针和指针数组是两个容易混淆的概念,但它们之间有着巨大的区别。本文将详细讲解数组指针和指针数组的定义、内存布局、区别,并通过实例代码加深读者的理解。 一、...

    C++指针数组、数组指针、数组名及二维数组技巧汇总

    1.数组名代表数组第一个元素的地址,注意,不是数组地址(虽然值相等),是数组第一个元素地址,a 等同于 &a[0]; a+1是第二个元素的地址。比第一个元素地址a(或者&a[0])超出了一个整型指针的大小,在这里是4个字节...

    C和C++中数组名与指针的区别.pdf

    ### C和C++中数组名与指针的区别 #### 数组名与指针的基本概念 在C和C++中,数组名与指针之间存在一些关键性的区别,这些区别对于理解这两种数据类型及其应用场景至关重要。 - **数组名**: 表示的是数组的起始...

    二维数组地址

    在C/C++中,我们可以使用取地址运算符`&`来获取数组元素的地址。例如,`&arr[0][0]`将返回二维数组左上角元素的地址,而`&arr[1][2]`将返回第二行第三列元素的地址。 对于二维数组,地址的计算方式与一维数组有所...

    第1讲 指针高级之指针与二维数组关于数组名地址内容都一样,学习资料

    当我们讨论二维数组时,例如`a[i][j]`,这里的`a[i]`实际上是一个一维数组,其类型取决于数组的维度。所以`a[i]`是一个指向整型数组的指针,可以用来访问该行的所有元素。同样,`a[i][j]`表示的是二维数组中的一个...

    数组名a和&a的区别

    数组名`a`和取地址运算符`&a`之间的区别可能会引发一些混淆,但理解它们的本质可以帮助我们更好地编写和理解C语言程序。 首先,让我们澄清数组名的概念。数组名`a`实际上是数组首元素的地址。这意味着当你使用`a`时...

    数组和指针之间的区别与联系

    当我们将数组名用作表达式时,除了在特定的上下文(如sizeof运算符、取址运算符&或字符串字面量初始化数组)之外,数组通常会“退化”为指向其首元素的指针。这意味着,尽管`s`在语法上不是一个指针,但在大多数情况...

    易语言取数组成员出现次数

    数组的声明格式通常为:`类型名 数组名[数组长度]`。 取数组成员出现次数的实现通常涉及以下步骤: 1. **遍历数组**:使用循环结构(如`循环`或`对于...到`)遍历整个数组。易语言的循环结构允许我们逐个访问数组...

    一篇有关数组的经典文章

    2. **数组与指针的区别**: - 数组名是一个常量表达式,不能被重新赋值。 - 指针变量可以被重新赋值以指向其他地址。 - 数组的大小在编译时确定,而指针可以指向不同大小的内存块。 - 数组名与指针之间的转换是...

    易语言数组中数值的查找

    例如,获取数组的第一个元素,可以写成`取数组元素 数组名, 0`。 3. **数值查找的基本思路**:在数组中查找特定数值,一般采用线性搜索(顺序遍历)或二分查找(已排序数组)。线性搜索简单易懂,从数组首元素开始...

    易语言取数组中重复文本下标

    在编程领域,处理数组是常见的任务之一,尤其是在易语言这种专为中文用户设计的编程语言中。本篇文章将深入探讨如何在易语言中利用源码查找并获取...在易语言中,理解和运用这些技巧将有助于编写更加高效和实用的程序。

    交错数组与多维数组的区别

    在编程领域,数组是一种基本的数据结构,用于存储同类型的元素集合。...选择哪种类型取决于你的具体需求,如数据的结构、内存效率和性能等因素。在实际编程过程中,理解这些差异将有助于你做出更合适的选择。

    数组和指针使用及区别详解

    理解数组和指针的区别至关重要,它们是程序设计的基础。数组提供了一种结构化存储数据的方式,而指针提供了动态访问和操作数据的灵活性。熟练掌握数组和指针的使用,能有效提升编程效率和代码质量。

    指针与数组.docx 指针数组:数组类型 *数组名数组长度

    选择哪种方式取决于具体的应用场景和编程需求。 总结来说,指针数组和数组指针是C语言中处理复杂数据结构的工具,特别是对于多维数组的访问。理解它们的工作原理和区别是编写高效、安全的C程序的基础。在实际编程中...

    取指定字节数组中的子数组 一个很好类例子

    标题 "取指定字节数组中的子数组 一个很好类例子" 暗示了这篇博客文章可能涉及的是关于如何从字节数组中提取出特定部分,即创建子数组的操作。在Java编程中,这样的操作通常是通过使用数组拷贝或者特定的类如`java....

    易语言汇编取数组成员数

    汇编语言允许直接操作内存和CPU寄存器,对于数组成员数的计算,通常涉及到内存读取和算术运算。 1. **计算数组长度**:在易语言中,数组的长度通常是固定的,但如果数组是在运行时动态分配的,我们需要遍历数组以...

    易语言源码易语言取数组内容异同源码.rar

    要理解和使用“易语言取数组内容异同源码”,你需要阅读并分析源代码,理解其逻辑和算法。这有助于提高你在易语言中处理数组问题的能力。通过学习这个示例,你可以掌握如何在易语言中有效地比较和处理数组,这对于...

    易语言取数组对应成员

    易语言是一种基于中文编程的计算机程序设计语言,旨在降低编程难度,让更多人能参与到编程中。在易语言中,处理数组是非常常见的操作...通过深入学习易语言的数组操作,可以更高效地处理数据,实现更复杂的算法和功能。

Global site tag (gtag.js) - Google Analytics