【学习笔记】C与指针(3)数组

目录

一、一维数组

1.数组名

2.数组下标

二、多维数组

三、指针数组


一、一维数组

1.数组名

当声明一个数组时,如

int a[10]

此时可知b[0]的类型是整形;而b的类型是指向 int 的指针常量b指向的是数组第一个元素地址

指针常量意味着不能更改该常量的值。

当b为一个指针时,下列两表达式含义一样。

b = a;
b = &a[0];

2.数组下标

下标引用一个数组 arry[sub] 与间接访问 *(arry+(sub)) 效果是相同的,但使用下标引用的优先级更高。

除了数组外下标对指针也是可以使用的,当

int arry[10];
int *p = arry + 2;

此时,p[3] 就表示 arry[5]。同时也可用 *(p+3) 来表示。甚至可以使用 p[-1] 表示 arry[1]。

在对指针和下标的使用中,下标绝不会比指针更有效率,但指针可能会比下标更高效。

下面有两个指针的高效用法

//将一个数组清零
int arry[10], *ap;
for(ap = arry; ap < arry + 10; ap++)
    *ap = 0;
//将y数组中的值赋给x
#define SIZE 50
int    x[SIZE];
int    y[SIZE];
void fun(int x[], int const y[])
{
    register int *p1, *p2;
    for(p1 = x, p2 = y; p1 < x + SIZE;)
        *p1++ = *p2++;
}

在声明第二个函数时,如果不想更改y中的值,最稳妥的方法是将其声明为常量。

二、多维数组

如 a[10][20] 就为一个多维数组,可将其理解为长度为10,其中的每个元素都是包含20个元素的数组。

同样,多维数组也可写为间接引用的形式,如 *(*(a+10)+20)。

作为函数参数传递时,多维数组只能采用以下两种形式

void fun(int (*a)[20]);
void fun(int a[][20]);

绝对不能写成 void fun( int **a);

在多维数组中,只有第一维才能根据初始化列表缺省地提供。剩余几个维必须显示地写出。如:

int arr[][5] = {
    {00,01,02},
    {10,11},
    {20,21,22,23}
};

三、指针数组

其作用在于对多个字符串列表,便于查找等等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华夙夜零

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值