首页编程指针数组 指针数组的数组名表示什么

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

编程之家2023-11-0672次浏览

今天给各位分享指针数组的知识,其中也会对指针数组的数组名表示什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

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

C语言中用指针变量指向数组元素

数组名并不是一个普通的变量,而是一个指向数组首元素的指针。也就是说,我们可以用数组名来初始化一个对应类型的指针。虽然数组名是指针,但它是一个指针常量。也就是说,不带下标的数组名不能作为左值。指针是一种数据类型,所以,我们可以用指针类型来创建一个数组。声明一个指针数组的语句格式是:

指针类型

*

数组名[常量表达式];

对指针数组的操作和对指针变量的操作并无不同.

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

指针数组的数组名就是该指针数组首元素的地址的别名。

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

比如,一个人可以叫王小二,也有叫它小二,或者小王,其实都是指同一个人。

指针数组就比如这个例子:int*p[10]那么p等价于&p[0]

因为指针里面存储的是地址(十六进制数),所以&p[0]这里面存放着一个int变量的地址。

是不是觉得用地址来存放地址有点想不通,下面举一个简单的例子:

比如 int*p[10];可以把&p[0]看成一张记录着地址的纸,那么根据这张纸的地址找到某个仓库,在仓库里面又放着记录着一个int变量地址的纸,又根据这个地址找到了存放int变量的仓库,在这个仓库里面放着int的值,其实就想寻宝一样,根据一关一关的线索找到指定的宝藏。

c语言指针指向数组的问题。

首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。

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

比如你定义了int

*p,a[10];并且让p=a;,

这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。

那么要引用a[i],你可以有很多种写法,比如*(a+i),

*(p+i),

p[i],都是等效的。

p++的含义其实不是p=p+1,至少有时不是,p++的操作其实是让p指向下一个元素,也就是原来p指向的是a[0],那么现在p指向a[1]了。由于a是int类型,站4个字节,那么p++这个操作其实是让p的内容增加了4。不要问为什么,c语言就是这么规定的。如果p指向的是一个char类型,那么p++就使p的值增加1。

什么是指针数组

同志们他说的是指针数组不是数组指针。

指针数组就是说是一个数组,数组中的每一个成员是一个指针。举例如下:

char*a[5]={"tan","li","cheng","fang","zheng"};

定义指针数组a,存放姓名,a有5个成员,即a[5]是包含5个指针元素的指针数组,5个指针中每个的值是该字符串的首地址,也就是说

a[0]=字符't'的地址

a[1]=字符'l'的地址

a[2]=字符'c'的地址

a[3]=字符'f'的地址

a[4]=字符'z'的地址

为何要这样?因为各个名字是字符串不是单个字符,也就是说它相当于二维数组

tan

li

cheng

fang

zheng

也就是相当于有行有列,所以要找到数组中的某一个字符就要先找到所在的行即a[i],这里a[i]就是个指针指向每行的第一个字符的地址,*(a[i]+j)就是第i+1行第j+1个元素。也就是说

char*a[5]={"tan","li","cheng","fang","zheng"};

等价于定义

char a[5][6]={"tan","li","cheng","fang","zheng"};

只是对于字符串,函数strncpy,strcpy,strcmp,strlen,strcat,strstr,strchr的参数都是指针变量都是一个指向字符串首字符的地址的指针,故用指针数组表示一个二维数组更方便形象,有些数据结构复杂,用指针数组来指向它们,当要改变数据的顺序时只要改变指向它们的指针的顺序不必改变数据本身,这样可以简化问题。指针是个好东西,是c语言的精华。你只要好好看《谭浩强的c程序设计》就会完全明白。

指针数组的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于指针数组的数组名表示什么、指针数组的信息别忘了在本站进行查找哦。

createtempfile,createNewFile和createTempFiledom?dom是哪个国家