数组是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语言允许为数组定义指针。数组指针具有以下属性:
- 指针指向数组第一个元素的地址
- 指针地址按元素类型的大小累加
- 数组上的指针操作与下表中的操作完全等效。
int a[10] = {
};
在定义一个指向数组的指针时,需要注意的是,该指针指向的是数组的首地址。数组的名称代表数组的首地址。
int *p = a;
而&a[0]
也表示数组的首地址,因此也可以使用:
int *p = &a[0];
不能使用
int *p = &a;
这种是基本数据类型指针初始化方法,对数组不适用,因为数组首地址就是数组名称=。
当指针指向数组元素时,使用指针的引用方法有两种:
- 地址参考
int a[10] = {
};
int *p = a;
a[i] = *(p+i);
//p+i 是下表为i的地址;
- 价值参考
int *p = a;
则 *p = a[0];
//p和a是完全等价的。
a[i] = p[i];
. . .
相关推荐
最新推荐
Java使用本地浏览器打开网页工具类共享
30天前
Mysql四种常见数据库引擎
26天前
数据结构与算法-线性表-链表
26天前
nest框架基本认识(一)
26天前
第十篇 GoogLeNet——模型精讲
26天前
java -jar 参数传递
23天前
ads via 小工具