数组 a+1 &a+1 的区别

1 #include<stdio.h>
2 int main()
3 {
4     int a[10];
5     printf("a==%d &a==%d\n",a,&a);
6     printf("a+1==%d &a+1==%d\n",a+1,&a+1);
7     return 0;
8 }

输出如下

a==602356544 &a==602356544
a+1==602356548 &a+1==602356584

其实 a只是表示首个元素的地址,类型是int 内存大小是4 所以+1 内存地址加4

但是&a表示的却是整个数组a的地址 4*10 个大小的数据类型 所以+40

时间: 2024-11-02 23:35:25

数组 a+1 &a+1 的区别的相关文章

数组与ArrayList的关系与区别

数组与ArrayList的关系与区别 一.数组与ArrayList的主要区别:效率.类型识别和primitive type.数组([]):最高效:但是其容量固定且无法动态改变:ArrayList:容量可动态增长:但牺牲效率:建议:首先使用数组,无法确定数组大小时才使用ArrayList! 1.效率:数组扩容是对ArrayList效率影响比较大的一个因素.每当执行Add.AddRange.Insert.InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,它就会以当前容

C++学习之数组名a与&amp;a的区别

在C++中定义一个数组: int a[5]={1,2,3,4,5} 那么a到底代表什么含义呢?首先想到的是a代表的是数组的首元素地址.那么如果问你a的类型是什么呢?估计很多人就不太确定了,看下面程序,让编译器告诉我们a是什么类型的数据: main.cpp如下: 从图片中的错误提示可以看出: a的类型是int [5]类型.那么直接将a赋值给一个int (*)[5]类型的指针类型是不行的,所以需要对a进行取地址操作&a这样得到的类型才是int(*)[5]类型(指向int [5]类型的指针类型). 那

数组、List和ArrayList的区别

有些知识点可能平时一直在使用,不过实际开发中我们可能只是知其然不知其所以然,所以经常的总结会对我们的提高和进步有很大的帮助,这里记录自己在工作之余的问题,持续更新,欢迎高手斧正. 数组.List和ArrayList的区别 数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改元素也很简单,比如: string[] s=new string[3]; //赋值 s[0]="a"; s[1]="b"; s[2]="c"; //修改 s[1

js中数组遍历for与for in区别(强烈建议不要使用for in遍历数组)

转自: http://www.cnblogs.com/javaee6/p/4142270.html?utm_source=tuicool&utm_medium=referral js中遍历数组的有两种方式 1 2 3 4 5 6 7 8 9 var array=['a'] //标准的for循环 for(var i=1;i<array.length;i++){     alert(array[i]) } //foreach循环 for(var i in array){     alert(ar

指针 与 数组 以及 a 与 &amp;a的区别

指针 与数组 并没有什么关系, 指针就是指针,指针变量在32位系统下,永远占4个byte,其值为某一个内存的地址,指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到; 数组就是数组,其大小与元素的类型和个数有关,定义数组时必须指定其元素的类型和个数,数组可以存储任何类型的数据,但是不能存放函数;; char *p = "abcdef"; // "abcdef" 放在静态区; 1) 以指针的形式:*(p+4) 这种形式先取出p存储的地址值,然后在加上4

[数据结构] 数组与链表的优缺点和区别

概述 数组 是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素.但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中.同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素.如果应用需要快速访问数据,很少插入和删除元素,就应该用数组. 链表 中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起,每个结点包括两个部分:一个是存储 数据元素 的 数据域,另一个是存储下一个结点地址的

数组array和切片(slice)的区别

一 数组简介: 数组是内置(build-in)类型,是一组同类型数据的集合,它是值类型,通过从0开始的下标索引访问元素值.在初始化后长度是固定的,无法修改其长度.当作为方法的参数传入时将复制一份数组而不是引用同一指针.数组的长度也是其类型的一部分,通过内置函数len(array)获取其长度.注意:和C中的数组相比,又是有一些不同的 1. Go中的数组是值类型,换句话说,如果你将一个数组赋值给另外一个数组,那么,实际上就是将整个数组拷贝一份2. 如果Go中的数组作为函数的参数,那么实际传递的参数是

c#数组的count()和length的区别

C# 数组中 Length 表示数组项的个数,是个属性. 而 Count() 也是表示项的个数,是个方法,它的值和 Length 一样.但实际上严格地说 Count() 不是数组的内容,而是 IEnumerable 的内容.这也是为什么 C# 2.0 时数组不能用 Count(),而 3.0 后就可以用 Count() 的原因. 对于数组,据说用 Length 快于 Count(). 所以一般情况:数组我用 Length,IEnumerable(比如 List)我用 Count().

一维、二维数组 与 常用的返回数组 以及 fetch_all与fetch_row的区别

一维数组:单行单列的数组. 二维数组:多行多列的数组.       (至少两行两列) 索引数组: fetch_all() 返回所有数组 fetch_row() 返回一行或一列数组  (第二行需要输入两边,第三行需要输入三遍) 返回关联数组: fetch_assoc() 返回数组含有对象: fetch_object() 返回的数组既有索引又有关联: fetch_array()