天天看点

一位数组名称

一位数组名称

  • 本质并不是一个指针

有两种特殊情况:

  • 对数组名称进行sizeof
  • 对数组名称 取地址,获取的指针步长是整个数组长度

除了两种特殊情况外,都是指向数组中首元素的地址的指针

数组名称—指针常量,指针的指向不可以修改

代码示例:

#define
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void printArray(int arr[], int len)//int arr[]等价于int*arr
{
        for (int i = 0; i < len; i++)
        {
               //printf("%d\n",arr[i]);//给人看
               printf("%d\n",*(arr+i));//给机器看
        }
}
void test01()
{
        int arr[5] = {1,2,3,4,5};
        //一堆数组名称 是不是指针
        printf("sizeof arr=%d\n",sizeof(arr));
        //除了两种特殊情况下,一维数组名称都是指针首元素的地址
        //特殊情况1:对数组名称进行sizeof
        //特殊情况2:对数组名称       取地址
        ///int *p=&arr;
        printf("%d\n",&arr);
        printf("%d\n",&arr+1);
        //int *p = arr;
        //数组名称     指针常量       指针的指向不可以修改的 int*const p
        //arr = NULL;
        //arr[0] = 100;
        int len = sizeof(arr) / sizeof(int);
        printArray(arr,len);
        int*p = arr;
        p = p + 3;
        //[]里面可以放负数
        printf("%d\n",p[-1]);
        printf("%d\n",*(p-1));
}
int main()
{
        test01();
        return EXIT_SUCCESS;
}      

更多文章,敬请关注微信公众号:YQ编程