当前位置:首页>正文

指针数组的数组名表示什么 指针数组名称是什么变量,是指针的指针吗

2023-04-25 11:45:36 互联网 未知

指针数组的数组名表示什么?

指针数组的数组名就是该指针数组首元素的地址的别名。
比如,一个人可以叫王小二,也有叫它小二,或者小王,其实都是指同一个人。
指针数组就比如这个例子:int *p[10] 那么p等价于&p[0]
因为指针里面存储的是地址(十六进制数),所以&p[0]这里面存放着一个int变量的地址。
是不是觉得用地址来存放地址有点想不通,下面举一个简单的例子:
比如 int *p[10] 可以把&p[0]看成一张记录着地址的纸,那么根据这张纸的地址找到某个仓库,在仓库里面又放着记录着一个int变量地址的纸,又根据这个地址找到了存放int变量的仓库,在这个仓库里面放着int的值,其实就想寻宝一样,根据一关一关的线索找到指定的宝藏。

指针数组名称是什么变量,是指针的指针吗?

int *p[5]
这是一个指针数组,5个指针用数组p定义了。
p 这个名称表示指向 这个数组,它本身是一个指针,也就是二级指针了。
实际上写法应该是 int* p[]更容易理解一些。

数组名和指针的区别

可以!下面是我学习数组和指针的总结: (1)指向数组首地址

对于一维数组a[10]:数组的首地址为a; 调用:p=a *(a i)或者*(p i)

对于二维数组a[3][4]:整个数组的首地址为a[0];调用:p=a[0] *(a[0] i)或者*(p i)。此时a代表数组第一行的地址。

(3)指向数组的每行

形如:

int a[3][4]

int (*p)[4] p=a

调用:*(*(p i) j)

例:

{int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}

int (*p)[4],i,j

cin>>i>>j

p=a //a代表的是数组第一行的首地址.

cout<<*(*(p i) j)<
(4)指针数组

例如:(字符串数组指针法)

{char *name[]={"BASIC","C ","PASCAL","COBOL","SQL"}

cout<
处理字符串还有以下方法:

(字符数组法,C-string法)

{char name[][30]={"BASIC","C ","PASCAL","COBOL","SQL"}

cout<
(字符串数组法,string法)

{ string name[]={"BASIC","C ","PASCAL","COBOL","SQL"}

cout<
三种方法的共同点是name[0]都是代表的"BASIC"的首地址而非其本身。

(5)指向指针的指针

形如 char **p

例:

{ char **p

char *name[]={"BASIC","PASCAL","C ","COBOL","SQL"}

p=name 2

cout<<*p<
cout<<**p<
分析:

*p=name[2]= "C "的首地址,(通常所说一个字符串的“地址”实际上指的是它的“首地址”或者“起始地址”),用cout 输出的不是字符串的首地址而是整个字符串(只要把一个字符串的起始地址给它,cout就一直往后面输出,直到遇到结束符为止),为了证明这一点,请看:string a=“finish”cout<
在上一例中,name[0]为"BASIC"的首地址,输出"BASIC",若换成*name[0]则输出B,若换成name则代表整个数组的首地址(而不是单个字符串"BASIC"的首地址),所以此时输出的是整个数组的首地址。若用*name则输出整个数组的首地址的内容,即"BASIC"(可见字符串的首地址内容为单个字符,一维数组首地址的内容为它的第一个元素,对于二维数组,比如int a[3][4],a代表的是第一行的地址,所以cout<