作者:手机用户2602913827 | 来源:互联网 | 2023-06-20 21:01
- 本质并不是一个指针
- 有两种特殊情况
- 对数组名称进行sizeof
- 对数组名称 取地址 ,获取的指针步长是整个数组长度
- 除了两种特殊情况外,都是指向数组中首元素的地址 的指针
- 数组名--- 指针常量,指针的指向不可以修改
- 如果将数组名传入到函数参数中,为了提高可读性通常写为
- int arr[]
- 访问数组元素时候,下标可以为负数
void printArray(int arr[], int len)// int arr[] 等价于 int * arr
{for (int i = 0; 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("&arr = %d\n", &arr);printf("(&arr + 1) = %d\n", &arr + 1);//数组名称 指针常量 指针的指向不可以修改的 int * const p; /*arr = NULL;arr[0] = 100;*/int len = sizeof(arr) / sizeof(int);printArray(arr, len);int * p = arr;p = p + 3;// []里面可不可以放负数 可以!!printf("p[-1]=%d\n", p[-1]);printf("*(p - 1)=%d\n", *(p - 1));
}