c语言指针对数组的引用

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路c语言指针对数组的引用,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

数组是c语言中常用的数据结构,其定义如下:

//声明式定义
int b[10];
b[0] = 1;
printf("%d",b[0]);

//初始化定义
int c[] = {1,2,3};

//内存定义
int *p = (int*)malloc(sizeof(int));

前两种定义都可以同下表直接引用,如b[0],c[1]。但是第三种是数组的动态定义,得到的是数组的指针,也就是数组的地址,那么对该类型如何使用呢?

首先数组的指针,c语言中允许为数组定义指针。数组的指针具有如下性质:

  1. 指针指向数组的第一个元素的地址
  2. 指针地址以元素类型的大小累加
  3. 指针对数组的操作和下表操作完全等价。
int a[10] = {};

定义指针指向数组是需要注意的是,指针指向的是数组的首地址。而数组的名称就表示数组的首地址。

int *p = a;

&a[0]也表示数组的首地址,因此也可以使用:

int *p = &a[0];

不能使用int *p = &a;这种是基本数据类型指针初始化方法,对数组不适用,因为数组首地址就是数组名称=。

当指针指向数组元素是,使用指针有两种引用方法:

  1. 地址引用
int a[10] = {};

int *p = a;

a[i] = *(p+i);

//p+i 是下表为i的地址;
  1. 取值引用
int *p = a;*p = a[0];

//p和a是完全等价的。

a[i] = p[i];

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156116.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!