首页 > 编程知识 正文

数组指针的使用,指针和数组的用法

时间:2023-05-06 14:11:49 阅读:254727 作者:1881

词组解析: 数组指针:我们可以这样记忆与理解,看词组最后两个字是指针,那么含义就是指向数组的指针。 指针数组:看词组的最后两个词是数组,那么含义是数组里面元素是指针的数组。

我们看代码可以更容易理解。

int a[3][4];int(*p)[4];//数组指针,p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为4个整型的数组。所以p是一个指针,指向一个数组叫指针数组。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。一个数组,叫数组指int *q[3];//指针数组p = a;for (int i = 0; i < 3; ++i){q[i] = a[i];数组名一定不能放在左值}int a[3][4];//a(int(*)[4])a[i](int *) a[i][j](int)int b[10];//b(int *) b[i](int)

从二维数组来理解,首先先介绍几个概念。

数组名代表数组首元素的首地址。数组的下标为什么从0开始?因为下标表示的是当前元素距首地址的偏移量。用树的方法来理解二维数组。 a[0]    a[1]    a[2]    

从代码中可以看到定义一个int(*p)[4];//数组指针,那么就可以指向p = a;p+1->a[1]; int *q[3];//指针数组,可以看到q是数组名,数组名是绝对不可以放到左值,因为它的地址空间已经占用,不能再赋值。

指针数组初始化方式可以是

for (int i = 0; i < 3; ++i){q[i] = a[i];数组名一定不能放在左值}

可以单个赋地址值。

int *arr[10];int *a[4];int **arr[10];

以上这些都是指针数组,为什么 呢?首先 拿第一个为例,arr先与[10]结合成为一个数组,然后这个数组里存着10个元素,每个元素的类型为int*;第二个也一样。第三个的意思是arr与[10]结合成为一个数组,数组的元素类型为int**。总的来说就是存放指针的数组叫指针数组。它怎么用呢?如下:

int *arr[10] = {"123","world"};

 这里面因为存放的都是一个int型的指针,所以每个指针都可以指向一个字符串。

我们来加强深化一下

int a[3][4];二维数组

a 的类型是(int(*)[4])数组指针 

a[i]的类型是(int *)指针是每一行的首地址

a[i][j]的类型是(int)整型
 int b[10];一维数组

b的类型是(int *)指针(数组首元素的首地址) 

b[i]的类型是(int)整型

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。