一维数组名的含义

一维数组名的含义

除了两种特殊情况,一维数组名都是指向数组的第一个元素的指针。

  1. 特殊情况一:sizeof(数组名) [统计数组长度]
  2. 特殊情况二:&数组名 [对数组名取地址,得到的是数组指针,数组指针的步长为整个数组的长度]

数组名是指针常量(int * const),指针的指向不可以修改,指针指向的值可以修改

#include <stdio.h>

// int arr[] 等价于 int *arr
// int arr[] 的可读性更好
void printfArr(int arr[], int len)
{
    for (int ii = 0; ii < len; ++ii)
    {   
        printf("%d\n", arr[ii]);
    }   
}

int main()
{
    int arr[5] = {1, 2, 3, 4, 5}; 

    int len = sizeof(arr)/sizeof(int);
    printfArr(arr, len);

    return 0;
}

扩展–区分指针常量和常量指针

#include <stdio.h>

int main()
{
    int a = 10; 

	// 1.指针常量
    // p1是一个指针常量,指针的指向不可以修改,但是可以修改指针指向的值
    int * const p1 = &a; 
    //p1 = NULL;            // 指针的指向不可以修改
    *p1 = 1000;             // 可以修改改指针指向的值
    printf("a = %d\n", a); 

    int b = 10; 

	// 2.常量指针
    // p2是一个常量指针,指针的指向可以修改,但是不可以修改指针指向的值
    int const *p2 = &b;          
    p2 = NULL;              // 指针的指向可以修改
    //*p2 = 1000;           // 不可以修改指针指向的值
    printf("p2 = %p\n", p2);

    return 0;
}

记忆方法

int * const 指针常量
即 * 指针在前 const 常量在后,即为指针常量。
在前的不可以修改,即指针不可以修改,即指针的指向不可以修改。


int const * 常量指针
即 const 常量在前 * 指针在后,即为常量指针。
在前的不可以修改,即常量不可以修改,即指针指向的值不可以修改。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值