如何应用下标运算符的C语言指针

应用下标运算符的C语言指针

目录

  • 引言
  • 指针和下标运算符
  • 案例分析
    • *(p + i) 和 p[i]
    • *(i + p) 和 i[p]
  • 总结

引言

在C语言中,指针是一种非常重要的数据类型。指针变量存储了一个特定类型的变量的地址,可以通过指针来访问和修改该变量。同时,下标运算符[]是一种常见的访问数组元素的方式。在这篇博客中,我们将探讨如何使用下标运算符应用于C语言指针。

指针和下标运算符

下标运算符[]本质上是通过指针来实现的。例如,如果我们有一个整数数组int_array,并且我们想要访问第i个元素,我们可以使用以下语法:

int val = int_array[i];

在上面的语句中,我们使用i将数组int_array的第i个元素的值赋给了val。

类似的,通过指针也可以使用下标运算符[]来访问元素。例如,如果我们有一个指向整数数组int_array的指针p,我们可以使用以下语法:

int val = *(p + i);

在上面的语句中,我们使用p + i计算出指针p指向的第i个元素的地址,然后使用间接运算符*将该地址指向的值赋给了val。

另外需要注意的是,下标运算符[]和指针之间的关系是支持交换的。也就是说,p[i]和i[p]都是合法的语法,将指针p看作指向数组int_array的首个元素,那么p[i]和i[p]其实指向的是int_array数组的第i个元素。

案例分析

*(p + i) 和 p[i]

下面考虑下面这个简单的例子:

int int_array[] = {1, 2, 3, 4, 5};
int* p = int_array;

int val1 = *(p + 2);
int val2 = p[2];

printf("val1 = %d, val2 = %d\n", val1, val2);

在上面的代码中,我们定义并初始化了一个整数数组int_array,并且定义了一个指向int_array数组的指针p。我们使用*(p + 2)和p[2]来访问int_array数组中的第3个元素。

输出结果为:

val1 = 3, val2 = 3

从输出结果可以看出,使用*(p + 2)和p[2]都可以访问int_array数组中的第3个元素。

*(i + p) 和 i[p]

我们在交换下标运算符[]和指针的语法时,也可以得到一样的结果。例如:

int int_array[] = {1, 2, 3, 4, 5};
int* p = int_array;

int val1 = *(2 + p);
int val2 = 2[p];

printf("val1 = %d, val2 = %d\n", val1, val2);

输出结果仍然为:

val1 = 3, val2 = 3

从输出结果可以看出,使用*(2 + p)和2[p]都可以访问int_array数组中的第3个元素。

总结

在本篇博客中,我们探讨了如何使用下标运算符应用于C语言指针。我们发现,通过指针也可以使用下标运算符[]来访问元素,同时下标运算符[]和指针之间的关系是支持交换的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江南侠客(上海)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值