指针表示元素的值还是地址
admin
2023-07-06 02:56:09

指针表示元素的值还是地址

指针表示元素的值还是地址图1

在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。

在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

二维数组的指针,某一行的指针,某一元素的指针

int a[5][6];

int (*p)[6]=a;

int * p1= a[0];

int * p2= &a[0][0];

首先,数组首地址值=行首地址值=第一个元素地址值,注意只是值相等,重要的是类型不同.记住:地址类型很重要.

1)int (*)[n]

数组地址类型,其中n为列宽,表示一行中包含n个int元素,此处为6,即6个int元素组成一行,并将其看成一个整体,int的数据宽度是4字节,因此一行(整体)有4*6=24个字节.此类指针每次递增1即递增24个字节

指针值都是4字节的,区分不同类型的目的就是为了指示:指针指向的内存的数据宽度,即该指针指向的地址开始存放的数据是多少字节的,进而实现数据对齐.

a是个数组,"a"这个标识符映射为常量指针,其类型为 int (*)[6],指向数组首地址,因此可以直接赋值给p.

注意p的数据宽度也是4*6=24,如果p++,那么递增的是24个字节.所以这种类型的指针也称为行指针,因为以行为基本单位.

因此,二维数组指针就是行指针.

2)int *

单个int类型元素的指针,也可以作为一维数组的指针,同样原因:数据宽度一致,都是4字节.

因此a[0]表示数组首行,而行数据是个int型的一维数组,因此其类型为 int *,所以可以直接赋值.

同样 a[0][0]表示数组首行首元素,因此取地址后也可以直接赋值给int *类型指针.

最后再次重申,解读指针定义或者分析右值类型时,数据宽度是关键所在.

附图显示数组首地址值=行首地址值=第一个元素地址值,但是类型是不同的.

指针表示元素的值还是地址图2

指针变量的类型与它所指向的变量类型一致

指针变量的内容 是一个地址值

如int a,*p

p = &a;

p指向了a这变量,p的内容就是a所在的空间地址, 用*p 相当于用a 但是 p++后 就不再指向这个变量了,而是a整型变量之后的一个整型变量

指针变量的值指变量的值还是地址的值

看一下定义就会知道

指针变量 就是存储“地址”的变量

int *p ; p 是指针变量,他用来存储地址,他的值就是个地址值!

在没有给p赋值时,一般它的值是0或是一个不确定的值,这时的指针变量是不能使用的!称之为野指针。

利用指针实现一维数组元素的输入和输出

答非所问,楼上均是 Ctrl V党。指针指向地址,内存地址,也就是说指针就是地址。

1维数组: int a[3],a就是首元素的地址,也就是指针。所以元素可以表示成*(a+0),*(a+1),*(a+2);

元素地址值:a,a+1,a+2.

2维数组: int a[3][3],元素:a[0][0]=*(a[0]+0)=*(*(a+0)+0) ……a[i][j]=*(*(a+i)+j)

元素地址值:*(a+0)+0……*(a+i)+j;

3维数组:int a[3][3][3],在外面套一个*()就是了。*(*(*(a+0)+0) +0)……a[i][j][k]=*(*(*(a+i)+j)+k)

元素地址值:去掉*()就是了:*(*(a+i)+j)+k

以上就是关于指针表示元素的值还是地址的全部内容,以及指针表示元素的值还是地址的相关内容,希望能够帮到您。

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...