2021-07-25 指针 指针与数组 指针与数组 1. 指针与一维数组 假设我们定义一个一维数组,该数组在内存中会有系统分配的一个存储空间,其数组名就是该数组在内存的首地址。若再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。我们说,数组名是数组的首地址,也就是数组的指针;而定义的指针变量就是指向该数组的指针变量。对一维数组的引用,既可以用传统的数组素下标法,也可使用指针表示法。例如: 则ptr就得到了数组的首地址。其中,a是数组的首地址,&a[0]是数组素a[0]的地址,由于a[0]的地址就是数组的首地址,所以两条赋值语句效果完全相同。指针变量ptr就是指向数组a的指针变量。指针变量与数组关系如下图。
若 ptr指向一维数组,现在来看C语言用指针对数组操作的方法: (1) ptr+n与a+n表示数组素a[n]的地址,即&a[n]。对整个a数组来说,共有10个素,n的取值为0 ~ 9,则数组素的地址就可以表示为ptr+0 ~ ptr+9或a+0 ~ a+9,与&a[0]~&a[9]保持一致。 (2)知道了数组素的地址表示法,(ptr+n)和(a+ n)就表示数组的各素,即等效于a[n]。 (3)指向数组的指针变量也可用数组的下标形式表示为ptir[n],其效果相当于*(ptr+ n)。根据以上叙述,可以用4种方法来访问数组素: 第1种为下标法,用a[i]形式访问数组素; 第2种为指针法,用*(ptr+i)形式间接访问的方法来访问数组素; 第3种为数组名法,用*(a+i)形式访问数组素; 第4种为指针下标法,用ptr[i]形式访问数组素。 输入/输出一维数组各素。 下标法 指针法 或者 说明:在程序中要注意*ptr++所表示的含义。*ptr表示指针所指向的变量; ptr++表示指针所指向的变量地址加1个变量所占字节数。具体地说,若指向整型变量,则指针值加2;若指向实型变量,则加4,以此类推。而“printf (“%4d”,*ptr++)”中,*ptr++所起的作用为先输出指针指向的变量的值,然后指针变量加1。指针变量的值在循环结束后,指向数组尾部的后面。假设素a[9]的地址为2000,整型占2字节,则ptr的值就为2002。请思考:如果将以上程序中的“ptr=a;,”语句去掉,再运行该程序会出现什么结果? 数组名法 指针下标法 2. 指针与多维数组
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/29255.html