数组和指针的关系

数组名本身就是地址或指针值,数组和指针都可以通过下标来访问。尽管指针和数组在访问内存的方式上几乎是相同的,但它们还是有区别的。指针变量可以取不同的地址作为它的值,但数组本身就是个地址,它是固定的。

假设a是个数组,i是个int变量。有一个基本的事实是:

a[i] 相当于 *(a + i)

表达式a[i]的值就是数组第i个元素(从0开始计数)的值,而*(a + i)是对表达式a + i进行解引用。后者是个指针表达式,指向a之后的第i个元素的位置。

这意味着我们可以在指针中使用数组记法。

当一个数组被声明时,编译器必须在内存中分配足够数量的连续空间来包含数组的所有元素。数组的基地址就是这个数组在内存中的起始地址,它也是数组第一个元素(索引为0)的地址。

时间: 2024-11-10 08:34:09

数组和指针的关系的相关文章

你必须知道的指针基础-2.指针的声明和使用及数组和指针的关系

一.计算机知道数据类型吗? 1.1 神奇的数据类型 At first,计算机中绝大部分数据都放到内存中的,不同的数据放到不同的内存区域中.But,内存角度没有数据类型,只有二进制:数据以字节(8位二进制)为单位存取.不同数据类型占据不同的字节,例如在32位系统中:int 为4个字节,short为2个字节(下面如未特殊声明,均为32为系统环境下的说明).下面我们看看int类型.short类型和double类型的数字分别在内存中如何存储: ①int类型:99999 由于int类型占4个字节,每个字节

积累的数组和指针的关系

C/C++的数组和指针基本等价,但也有细微的不同. 可以把数组名直接赋值给指针,也可以用数组第一个元素的地址给指针赋值 double a[5]={2,4,6,9,23}; short stdd[2]={3,5}; double * c = a; short *d = &stdd[0]; 指针变量+1 = 指向数组中第二个元素,如c=c+1,c[0]=4; 对指针操作就像对数组一样 *(c+1) = c[1] = a[1] 用sizeof用于数组得到的是整个数组的长度(字节数),sizeof用于指

c语言中多维数组和指针的关系

如图: 执行结果: 说明:由执行结果可知,三个输出的结果相等(可能在不同的平台执行结果不相同,但三个的结果是相等的),数组multi的地址与数组multi[0]的地址相同,都等于存储的第一个整数的地址(multi[0][0])

C语言关于数组与指针内容小结

数组的基本概念 什么是数组:数组就是:数组是相同类型的元素的一个集合       类型说明符 数组名 [常量表达式]: 其中,类型说明符是任一种基本数据类型或构造数据类型.数组名是用户定义的数组标识符.方括号中的常量表达式表示数据元素的个数,也称为数组的长度.例如: int a[10]; /* 说明整型数组a,有10个元素 */ float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */ char ch[20]; /* 说明字符数组ch,有20个元

几个关于数组、指针的易错点

指针是某个变量的地址,是一个地址. 指针变量是存放指针(某个变量地址)的变量,是一个变量. 指针变量是一个变量,也有它自己的地址:这几句话对理解指针非常有帮助. 举例: int c = 76; int *pointer = &c; 普通变量 c 和 指针变量 pointer 在内存中的形式如下图: : 指针变量pointer 有它自己在内存中的地址,见上图黄色区域,指针变量的值存放着一个地址,见上图红色方框中的蓝色方框中的地址,这个地址指向变量c,也即这个地址和变量c的地址相等: 我们把c,c的

数组与指针(二)

对于数组,我们最为头痛的莫过于数组与指针的关系.在我看来,想要把数组和指针的关系理解通透,关键在于理解指针的关联类型(每个指针都有一个与之关联的数据类型).因为文章的篇幅比较长,所以分成了两篇,这是第二篇(没看第一篇的可以先看这里哦,磨刀不误砍柴工,大家要有点耐心 ^ ^ )http://www.cnblogs.com/CatDrinkMilk/p/4331355.html 二维数组与指针 在C++中,其实并没有真正意义上的多维数组,所有的多维数组其本质都是数组的数组(这句话很拗口,大家要多想几

数组与指针(数组中所有元素的和)

//1.下面这个例子是计算数组中所有元素的和 //数组与指针的关系,整型是4个字节,a[] == *a, a[i] = *(a+i) #include <stdio.h> #define SIZE 10 int sum (int a[],int n); int main(){ int ar [SIZE] = {10,20,30,40,50,60,70,80,90}; long answer; answer = sum(ar, SIZE); //重点是这一句,ar为int [10]类型 prin

C语言核心之数组和指针详解

寒假要开始猛刷<剑指offer>,先回顾一下C语言基础做个热身. 指针 相信大家对下面的代码不陌生: 1 int i=2; 2 int *p; 3 p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和其它变量一样定义:如: int *p: .'*' 是间接寻址或间接引用运算符.上例中我们还

c++ 数组 与指针

指针 相信大家对下面的代码不陌生: int i=2;                                             int *p;                                              p=&i; 这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和