数组指针和指针数组的区别(C语言)
当前位置:以往代写 > 其他教程 >数组指针和指针数组的区别(C语言)
2019-06-14

数组指针和指针数组的区别(C语言)

数组指针和指针数组的区别(C语言)

  C语言中指针有两个概念,一个叫指针数组,一个叫数组指针。两者顺序不同却是两个不同的知识。本来只是讲解关于指针数组的概念以及知识,但是考虑到两个内容容易混淆。而且数组指针的知识理解也不容易。下面将会对两者的概念以及如何运用进行说明。

       指针数组和数组指针的区别

   指针数组和数组指针的区别

  对于很多初学者来说,总是分不清两者之间的区别:其实两个在定义上就是符号优先级的问题。

       指针数组

         指针数组的本质是数组。int *a[3];这是一个指针数组,为什么这样说。在这行代码中,[ ]的优先级最高,a先和[ ]组合形成一个数组,再和*组合形成指针数组。可以看出int修饰的是指针,其包含3个指向int 类型数据的指针。

指针数组代码

       先定义了一个指针数组,用循环赋值,这里的赋值不是赋变量的值,而是变量的地址。在指针数组中,每一个元素都是用来存放所对应变量的地址的。

       也可以用一个指向字符的指针数组来存储一个字符串列表,如下:

指针数组的char实例

       数组指针

         数组指针的本质是指针。int (*a)[3];这是一个数组指针,我们来分析一下。因为( )的优先级比[ ]的高,所以*和a组合,形成一个指针,然后再和后面的数组组合,相当于*a指向数组的首地址。要注意的是:在数组指针中的数组没有名字,相当于匿名数组。而在数组指针中int修饰的是数组的内容。下面的定义名不一样不影响理解。

数组指针的代码

      m是一个二维数组,p是数组指针。因为(*p)[4]指向数组的首地址。所以p=m直接把m[0][0]的地址传给p。下面在使用循环把p输出。p+i相当于二维数组的第一个括号。j相当于第二个括号。

      指针数组的概念以及用法都很简单,而数组指针就相对复杂很多。指针数组的本质是数组,你可以根据数组去理解。但是数组指针的本质是指针,如果你对指针的概念好不熟悉,就更加容易混淆。所以指针的基本知识一定要牢牢的掌握。

    关键字:

在线提交作业