美文网首页
数组与指针

数组与指针

作者: b6aed1af4328 | 来源:发表于2016-10-07 10:22 被阅读12次

地址和指针

地址与指针变量是一体两面的。类似int型变量和int型数据的关系。在一般的地址传递中,类比数据传递,也是借助指针变量作为中介传递。没有指针变量,无法分配内存空间给地址数据,连存储都做不到,谈何传递。且利用指针变量作为中介也有助于理清思路和便于调试。

*(0x7338754)   //*应接指针变量,这是一个错误。

以上的错误是需要避免的。

小仓老师说:

指针变量就是地址变量。

是很有道理的,且较精辟地指出的指针的本质。

数组和指针

数组名是指针,指向该数组第一个元素的首地址。但数组名属于const int *型指针,可改变它指向的内存空间的内容,却无法改变它的指向。
数组名作为指针使用时,永远指向其数组第一个元素的首地址。

int array[3]={1,2,5};
printf("%d %d %d\n",*array,*(&array+1),*(&array[0]+2));

1、3显示数字,2显示地址,讨论(&array+1)。
array显示地址;
&array显示地址;
(
&array)显示地址;
(**&array)显示数值;

array作为数组名,值为地址,本身便含一层&。

数组名、&数组名、&数组名[0]是可以作为指向数组第一个元素首地址的指针使用的。

二维数组与指针

二维数组可分解为多个一维数组处理。

int array[3][4]={1,2,3,4,5,6,7,8,9,13,34,45};

array是整个二维数组的数组名,它的指向即可以说是指向整个二维数组的首地址,也可以说是指向第一行一维数组的首地址。
array[0]、array[1]、array[2]分别是二维数组下第一行、第二行、第三行的一维数组的数组名,作为数组名,它可以作为指向该数组的首地址的指针使用。

array作为整个二维数组的数组名,值为地址,本身含2层&。

故 array 显示地址;
array显示地址;
array显示值。
基于一维数组的认识,很容易得出array+i,array[i],
(array+i),&a[i][0]是等同的。
可以分2个部分去理解,前3个是基于数组名的角度去认识,第4个是从首元素的首地址去认识指针。
再者array+i是从整个二维数组的角度(
它是从整个二维数组的首地址出发,指针加法使用首地址,故这样说
)使用array,array含2个&,array+i和(array+i)等同;而array[i]是将整个二维数组分解为一维数组处理了,这时array[i]就只含一个&了,array[i]与(array[i])不等同,一个是地址,一个是值。
((array+i)+j)是从整个二维数组出发,含2个&,显示为二维数组第i行第j列元素的首地址,(*(array+i)+j)是该元素的值。

指针数组与二维数组指针变量

指针数组:一组有序的指针的集合。

int *pa[3];

二维数组指针变量:单个变量,其一般形式中“(指针变量名)”两边的括号不可少。*

int (*pa)[3];

一般而言,指针将地址和值分得很清楚,在输入输出时也这样,地址归地址,值归值。但在字符输入输出时,%s%c下,scanf和printf会智能输入输出,ch为指向首地址的指针变量,会模糊,直接输入输出到首地址之后的字符数组中去。

相关文章

  • C语言的数组指针与指针数组(One)

    一、数组指针与指针数组: 数组指针<——>本质是指针 指针数组<——>本质是数组上图: 二、数组指针: int ...

  • C语言21 指针数组与数组指针

    C语言21 指针数组与数组指针 指针数组的定义 指针数组的赋值 结构体指针数组 分析下面的代码 数组指针的定义 数...

  • 指针数组 & 数组指针 & 函数指针

    一、指针数组 & 数组指针 普通数组: 即数组名a与(*p)等价,都代表数组的首地址,此为数组指针 指针数组: ...

  • 指针笔记

    指针数组和数组指针 数组指针是指向数组的指针,指针的值与数组首元素地址相同,但范围是整个数组,所以数组指针和数组名...

  • C语言特性(指针数组和指向指针变量的指针)

    指针数组和指向指针变量的指针 指针数组与main()函数形参 声明指针数组与声明普通数组的语法类似,其语法格式如下...

  • 指针

    指针数组与数组指针 在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针...

  • iOS 指针详解

    指针数组与数组指针在这里数组指针是指向数组的指针,其本质为指针,指向的对象是数组。由于数组的形式多样所以数组指针的...

  • 2019-09-18C语言复杂表达式与指针高级应用

    1.指针数组与数组指针 1.1、字面意思来理解指针数组和数组指针 (1)指针数组的实质是一个数组,这个数组中存储的...

  • 数组知识点

    数组指针与指针数组: int(*p)[4]; --定义数组指针p,指向含4个元素的一维整型数组的指针变量(是指针)...

  • c基础—指针运算和函数指针

    二级指针 数组和数组指针 采用指针遍历数组循环赋值 遍历 赋值 指针与数组的几种写法 函数指针(回调) 题目:监听...

网友评论

      本文标题:数组与指针

      本文链接:https://www.haomeiwen.com/subject/zbryyttx.html