C语言——数组指针

通过指针引用数组

数组元素的指针

  • 数组指针:数组中的第一个元素的地址,也就是数组的首地址。
  • 指针数组:用来存放数组元素地址的数组,称之为指针数组。
// 定义一个一般数组
int a[] = {
   
   1,4,9};
// 使用指针变量存储数组的第一个元素的首地址,也就是数组的首地址
int *p = &a[0];// 数组首地址
// 在C语言中,由于数组名代表数组的首地址,因此,数组名实际上也是指针。
int *p = a;
// 意味着:int *p = &a[0] 完全等价于 int *p = a;
printf("%d\n",*p); // 1

注意:虽然我们定义了一个指针变量接收了数组地址,但不能理解为指针变量指向了数组,而应该理解为指向了数组的元素。

指针的运算

指针运算:指针变量必须要指向数组的某个元素。

序号 指针运算 说明
1 自增:p++、++p、p=p+1|p+=1 让指针变量指向下一个元素
2 自减:p-- 、–p 、p-=1 让指针变量指向上一个元素
3 加一个数:p+1 下一个元素的(首)地址
4 减一个数:p- 1 上一个元素的(首)地址
5 指针相减:p1 - p2 p1,p2之间相差几个元素
6 指针比较:p1 <p2 前面的指针小于后面的指针

案例1:

#include <stdio.h>
int main()
{
   
   
    // 一般数组
    int a[] = {
   
   1,3,5,7,9};
    // 计算数组中元素的个数
    // sizeof用法:sizeof(运算数) 或者 sizeof 运算数
    int len = sizeof a / sizeof a[0];
    // 创建指针变量
    int *p = a;
    // 创建循环变量
    register int i = 0;
    // 遍历
    for(;i < len; i++)
    {
   
   
        printf("[1] %d ",a[i]); // 下标法
        printf("[2] %d ",*(a+i));// 指针法,但是这种写法,需要注意,a+i无法修改数组,只读
        printf("[3] %d ",*(p+i));// 指针法,这种更为灵活,可读可写,建议这种写法
        // printf("%d\n",*p); // 等价于上面写法
        // p++;
    }
    printf("\n");
    return 0;
}

案例2:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值